为什么不能合并到一个裸 git 存储库中?

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

git 在工作树上执行所有 merge-y 操作(真正的合并、cherry-picks、变基、补丁应用)。之前多次提到过这一点,例如在知识渊博的 Jakub Nar\xc4\x99bski\ 的答案之一中:

\n
\n

如果不接触工作目录(和索引),合并(或变基)就无法工作,因为可能存在必须使用工作目录(和/或索引)解决的合并冲突

\n
\n
\n