5

为什么我不能merge进入一个裸回购?裸仓库没有HEAD工作树。在配置文件中我们可以看到bare=true.

你也不能pull在一个裸仓库中(因为 pull = fetch & merge 和 merge 不起作用)。但是,你可以推送到一个裸仓库——为什么?据我所知,push还包含一个合并,但在这种情况下我们可以做得很好。

所以,问题可能是“git merge 是如何工作的?”。为什么需要一个HEAD?合并时它在做什么?

4

1 回答 1

1

正如 Chronial 指出的那样,推送会进行快进合并或强制更新,这只是将引用/分支指针移动到不同的提交。

在实际的非快进合并中,您需要一份工作副本,以防遇到需要解决的冲突。其他 Stack Overflow 用户之前已经提到过;例如,看到这个答案(强调我的):

git 在工作树上执行所有的合并操作(真正的合并、cherry-picks、rebases、补丁应用程序)。这在之前多次提到过,例如在知识渊博的 Jakub Narębski 的答案之一中:

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

于 2013-08-29T01:56:45.827 回答