切换到子模块时Git合并

时间:2012-12-07 09:22:20

标签: git git-submodules git-merge

我们在我们的应用程序中使用Qooxdoo框架。目前,它的副本存储在根文件夹“qooxdoo”中的Git存储库中。我们决定将子模块直接替换为GitHub Qooxdoo存储库,因此我们可以更容易地检查新版本。

我基于master创建了这些更改的分支,称为qooxdoo-update。完全删除旧文件夹并为qooxdoo添加了子模块。

  

git rm -r qooxdoo
  git submodule add git://github.com/qooxdoo/qooxdoo.git qooxdoo

到目前为止,这项工作非常好。但是当我想将master合并到这个分支以保持更新直到其他开发人员可以测试他们的代码而不是新版本时出现问题。

在qooxdoo-update分支中我发出命令:

  

git merge origin / master

     

CONFLICT(文件/目录):在origin / master中有一个名为qooxdoo的目录。添加qooxdoo作为qooxdoo~HEAD

...然后

  

git status
  未合并的路径:      (根据需要使用“git add / rm ...”标记分辨率)

   added by us:        qooxdoo

...运行

  

git rm qooxdoo
  qooxdoo:需要合并   rm'qooxdoo'
  取消链接文件'qooxdoo'失败。我应该再试一次吗? (Y / N)

...或

  

git add qooxdoo
  错误:无法索引文件qooxdoo
  致命:更新文件失败

所以我不确定如何解决冲突以成功完成合并。

2 个答案:

答案 0 :(得分:1)

如果您想返回上一个最新版本的文件/目录,请执行:

git reset HEAD qooxdoo

应该有用。

答案 1 :(得分:0)

git rm -rf qooxdoo命令应该在自己的提交中完成,然后是子模块添加。这将告诉git(当从master合并到分支时)关于意图。目前,合并的相同提交只是替换文件/内容 - 因此git变得混乱。你有机会重播主提交吗?