我的朋友
git merge master
我拉了一下分支。我可以看到文件中的差异行,如
<<<<<<< HEAD text1 ======= text2 >>>>>>> origin/master
我如何模拟我朋友停止的合并?我可以接受的解决方案包括一些拉/ checkout 到其他地方,一些复制/粘贴命令,其他命令/工具,以检测不同的部分等。
nfs0ujit1#
我不会尝试从您朋友的工作中恢复,而是从头开始重做合并。找到你朋友的合并提交,并使用git log --graph或git log --format=fuller来确定它的父提交:例如,我有39184c481a,它是2aa69455a3到1d3c2f45f6的合并。
git log --graph
git log --format=fuller
39184c481a
2aa69455a3
1d3c2f45f6
git log --format=fuller 39184c481a commit 39184c481a Merge: 1d3c2f45f6 2aa69455a3 Author: ...
然后 checkout 原来的第一个父对象,并将另一个父对象合并到其中
git checkout 1d3c2f45f6 git merge 2aa69455a3
现在我的状态和提交完成时一样。因此,从这里您应该能够重做冲突解决。你可能想给予自己一个分支,以便以后能够找到这个工作:
git checkout -b dev.fixing-the-merge
最后把它合并回你的主分支,或者如果你的团队愿意的话,用git push --force重写历史。
git push --force
eblbsuwk2#
在这种情况下,你可以通过git grep '<<<<<<<'代码找到那些仍然需要合并的地方。如果你更正了代码,你可以自己提交它来指明哪个解析是由哪个作者完成的,或者你可以修改现有的提交来使每个提交都是可构建的和正确的。然而,在这种情况下,提交的作者信息提供的信息较少。你还需要考虑你的git组织工具。在github上,对分支的提交通常是被禁止的。因此,强制推送更新的提交通常是不可能的。在这种情况下,您必须创建自己的提交。在Gerrit上,修改提交是设计的一部分,它更新了开放的更改。
git grep '<<<<<<<'
oipij1gg3#
我把这个https://stackoverflow.com/a/54099010/2900777和这个https://stackoverflow.com/a/54104467/2900777结合起来。
BRANCH_DIR
MERGE_DIR
git grep '<<<<<<<' | cut -d':' -f1 | sort -u
git mergetool FILENAME
3条答案
按热度按时间nfs0ujit1#
我不会尝试从您朋友的工作中恢复,而是从头开始重做合并。
找到你朋友的合并提交,并使用
git log --graph
或git log --format=fuller
来确定它的父提交:例如,我有
39184c481a
,它是2aa69455a3
到1d3c2f45f6
的合并。然后 checkout 原来的第一个父对象,并将另一个父对象合并到其中
现在我的状态和提交完成时一样。因此,从这里您应该能够重做冲突解决。
你可能想给予自己一个分支,以便以后能够找到这个工作:
最后把它合并回你的主分支,或者如果你的团队愿意的话,用
git push --force
重写历史。eblbsuwk2#
在这种情况下,你可以通过
git grep '<<<<<<<'
代码找到那些仍然需要合并的地方。如果你更正了代码,你可以自己提交它来指明哪个解析是由哪个作者完成的,或者你可以修改现有的提交来使每个提交都是可构建的和正确的。然而,在这种情况下,提交的作者信息提供的信息较少。你还需要考虑你的git组织工具。在github上,对分支的提交通常是被禁止的。因此,强制推送更新的提交通常是不可能的。在这种情况下,您必须创建自己的提交。在Gerrit上,修改提交是设计的一部分,它更新了开放的更改。
oipij1gg3#
我把这个https://stackoverflow.com/a/54099010/2900777和这个https://stackoverflow.com/a/54104467/2900777结合起来。
BRANCH_DIR
)MERGE_DIR
)BRANCH_DIR
中,运行以下命令并对需要检查的文件进行排序MERGE_DIR
中,对上一步中的每个文件运行MERGE_DIR
中文件的冲突后,将内容复制/粘贴到BRANCH_DIR
中的文件中