你为什么不能在一个简单的git仓库中合并?

时间:2013-08-28 21:10:16

标签: git git-merge git-bare

为什么我不能merge进入一个简单的回购? Bare repos没有HEAD或工作树。在配置文件中,我们可以看到bare=true

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

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

1 个答案:

答案 0 :(得分:1)

As Chronial points out,推送快进合并或强制更新,只是将引用/分支指针移动到不同的提交。

在实际的非快进合并中,如果遇到需要解决的冲突,则需要工作副本。其他Stack Overflow用户之前已经提到过它;例如,请参阅this answer(强调我的):

  

git在工作树上执行所有merge-y操作(真正的合并,樱桃挑选,rebase,补丁应用程序)。之前曾多次提到这一点,例如知识渊博的JakubNarębski的答案之一:

     
    

合并(或rebase)无法在不触及工作目录(和索引)的情况下工作,因为可能存在必须使用工作目录(和/或索引)解决的合并冲突