代码之家  ›  专栏  ›  技术社区  ›  nathanvda

git:如何在使用子模块时很好地将更改恢复到主模块中

  •  5
  • nathanvda  · 技术社区  · 14 年前

    我使用git工作流,如中所述 this blogpost 简而言之:每个人都在他/她自己的分支内发展,在合并回主分支之前,你将分支重新调整为主分支以获得干净的历史。

    这很管用。

    现在我们有了一个子模块,因为这是一个内部插件(Rails),所以我们需要经常更改它。所以大多数时候,我在普通分支和子模块分支中都有变化。

    然后,当我尝试对我的根做同样的操作时,我总是在我的插件(子模块)上得到一个错误。我必须先解决这个错误,然后再做 git rebase --continue . 所以如果你想 git mergetool 我将文件夹转换为文件。

    <folder_name>.orig 覆盖文件 <folder_name> 一切都很好。

    简而言之:通过checkout-b/rebase/merge-workflow工作时,如何同时处理更改的子模块?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    8 年前

    无论你遵循什么工作流程 with submodules ,有一条规则你不应该忘记:
    (来自Git教程)

    如果要在子模块内进行更改,应首先签出分支,进行更改,在子模块内发布更改,然后重试

    $ git checkout master
    $ echo "adding a line again" >> a.txt
    $ git commit -a -m "Updated the submodule from within the superproject."
    $ git push
    $ cd ..
    $ git add a        # There is a gotcha here.  Read about it below.
    $ git commit -m "Updated submodule a."
    

    那么,在尝试从所述父项目重基/合并之前,您是否在父项目中提交了子模块的新状态?