这是一个简单的问题,但 git 的标签确实令人困惑,我找不到答案。
当我有本地更改并且想要将最新的远程存储库合并到本地存储库时,我会进行本地提交,然后 git pull。
当出现合并冲突时,我可以选择使用 MERGE_HEAD 解决冲突并使用 HEAD 解决冲突
哪个是远程仓库,哪个是本地仓库?
谢谢你
他们都是本地人(这很重要,尽管不是很有帮助:-))。
HEAD
是您的当前分支,这意味着您现在已签出的分支。对于 git merge
,这是您开始时签出的那个。
MERGE_HEAD
是其他提交,这意味着您告诉Git合并的提交的哈希ID。也就是说, git merge origin/master
将 origin/master
解析为某个本地提交哈希 ID,然后合并该提交,并且 MERGE_HEAD
包含该提交的哈希 ID。
我认为另一个提交的更好术语是 other 或
--theirs
,Git 有时使用这些术语,但 Git 的其他部分确实使用术语 remote 来指代 --theirs
提交。
我在搜索同样的问题时偶然发现了这个线程。我使用 WinMerge 作为 TortoiseGit 的合并工具,在解决冲突时,它会显示 3 个窗格:左侧的
MERGE_HEAD
,中间的 Base
,右侧的 HEAD
。
原来
MERGE_HEAD
是您要尝试合并的提交/分支,HEAD
是您要尝试合并到的提交/分支,Base
是您应该编辑才能解决的合并结果冲突。
因此,您应该在中间窗格中编辑代码,
Base
,保存并提交。
2021年11月11日更新:这个答案不准确..请参阅下面的评论。
HEAD = mine , MERGE_HEAD = theirs
参见https://tortoisegit.org/docs/tortoisegit/tgit-dug-conflicts.html