Nau*_*ard 5 git git-merge git-bare
为什么我不能merge进入裸回购?裸回购没有HEAD或没有工作树。在配置文件中,我们可以看到bare=true.
您也不能pull在裸仓库中(因为 pull = fetch & merge 和 merge 不起作用)。但是,你可以推送到一个裸仓库——为什么?据我所知,push还包含一个合并,但在这种情况下我们可以做得很好。
所以,问题可能是“git merge 是如何工作的?”。为什么需要一个HEAD?合并时它在做什么?
小智 1
正如 Chronial 指出的那样,推送会快进合并或强制更新,这只是将引用/分支指针移动到不同的提交。
\n在实际的非快进合并中,您需要一个工作副本,以防出现需要解决的冲突。其他 Stack Overflow 用户之前已经提到过;例如,请参阅这个答案(强调我的答案):
\n\n\ngit 在工作树上执行所有 merge-y 操作(真正的合并、cherry-picks、变基、补丁应用)。之前多次提到过这一点,例如在知识渊博的 Jakub Nar\xc4\x99bski\ 的答案之一中:
\n\n\n如果不接触工作目录(和索引),合并(或变基)就无法工作,因为可能存在必须使用工作目录(和/或索引)解决的合并冲突。
\n