我阅读了 here那 git FETCH_HEAD 是一个短暂的引用。 git FETCH_HEAD 引用的生命周期是多少?
当我执行
git fetch origin
时,在这种情况下会更新许多远程跟踪分支。 FETCH_HEAD 指向哪里?
最佳答案
这根本不是真正的引用;引用是指向单个提交的指针(或者,在
HEAD
的情况下,是分支名称)。FETCH_HEAD
而是关于上次获取的分支的 git 元数据。它一直存在,直到被另一个 fetch 重写这不是真正的引用,包含所有有关已获取的远程跟踪信息的信息。
当您运行 git merge FETCH_HEAD
(或通过运行 git pull
隐式执行此操作)时,git 会特别对待它,而不是将其视为普通引用。相反,将查询 FETCH_HEAD
文件,并且 git 将查找没有给它的特殊标记 not-for-merge
的分支。该分支将用于 merge 。 (Git 根据与您的 git fetch
调用对应的远程跟踪分支或您运行它时所在的分支来确定此分支。)
请注意,在 FETCH_HEAD
中,还包括有关远程分支的详细信息,这允许 git 为 merge 提交创建一条消息,详细说明该分支来自何处 . (例如,“Merge of branch 'master' of https://my.visualstudio.com/my/repository
”)。
FETCH_HEAD
,就像很多 git 存储库元数据一样,只是一个文本文件;阅读它以了解它在每次获取后如何变化是非常有启发性的。 (例如,您可以看到您链接到的答案非常不正确,FETCH_HEAD
确实不包含单个分支的信息,它包含所有 Remote 上的分支。)😃
关于git FETCH_HEAD 短暂引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568263/