将当前分支合并到HEAD中

时间:2012-08-24 19:46:54

标签: git merge git-merge pull

Master HEAD有一些变化,我试图将我当前的局部变化与Head合并 假设我有相互矛盾的变化。 git只是拒绝pull

它说我有相互冲突的变化,所以在这种情况下我希望它告诉我有冲突的文件,但它希望我恢复我的本地更改,然后拉

     Master 
     /    \
  branch1  branch2 (local)
      \
   Master 

当branch2尝试提交对master的更改失败时。在这种情况下我该怎么办?手动将文件复制到某个位置,拉,然后使用winmerge合并文件?或者有更好的合并方式吗?

当我执行git pull时,它指出 - 本地更改将被覆盖,因此在拉动之前隐藏或提交更改。

当我stashcommit更改,然后pull stash pop失败时,表明工作副本中的更改将被覆盖。

BTW,即使我尝试使用rebase,我也从未在任何一种情况下看到有冲突的文件。

2 个答案:

答案 0 :(得分:2)

这个问题的答案隐藏在文档的简单视图中。来自git help merge


如何解决冲突

看到冲突后,你可以做两件事:

  • 决定不合并。您需要的唯一清理是将索引文件重置为HEAD提交以反转2.并清除所做的工作树更改 由2.和3。; git merge --abort可以用于此目的。

  • 解决冲突。 Git将标记工作树中的冲突。将文件编辑为形状,并将git add编辑为索引。使用git commit密封 这笔交易。

您可以使用多种工具解决冲突:

  • 使用mergetool。 git mergetool启动图形合并工具,它将帮助您完成合并。

  • 看看差异。 git diff将显示三向差异,突出显示HEAD和MERGE_HEAD版本的变化。

  • 查看每个分支的差异。 git log --merge -p <path>将首先显示HEAD版本的差异,然后显示MERGE_HEAD版本。

  • 看看原件。 git show :1:filename显示共同的祖先,git show :2:filename显示HEAD版本,git show :3:filename显示 MERGE_HEAD版本。

答案 1 :(得分:0)

看起来使用GIT的最佳方式是拥有分支机构。

分支1
GIT承诺
GIT PUSH
GIT MERGE master(用于获取更新的更改)

分支2
GIT承诺
GIT PUSH


GIT合并分支1 GIT Merge branch2

我认为没有别的办法。如果我错了,请纠正我?

这是否正确,如果是,在这种情况下使用分支是顺利的!