Master HEAD有一些变化,我试图将我当前的局部变化与Head合并
假设我有相互矛盾的变化。 git
只是拒绝pull
。
它说我有相互冲突的变化,所以在这种情况下我希望它告诉我有冲突的文件,但它希望我恢复我的本地更改,然后拉
Master
/ \
branch1 branch2 (local)
\
Master
当branch2尝试提交对master的更改失败时。在这种情况下我该怎么办?手动将文件复制到某个位置,拉,然后使用winmerge合并文件?或者有更好的合并方式吗?
当我执行git pull
时,它指出 - 本地更改将被覆盖,因此在拉动之前隐藏或提交更改。
当我stash
或commit
更改,然后pull
stash pop
失败时,表明工作副本中的更改将被覆盖。
答案 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
我认为没有别的办法。如果我错了,请纠正我?
这是否正确,如果是,在这种情况下使用分支是顺利的!