我用git和github做了一些工作,但结果出乎意料。经过几个月的分支工作,我把它合并回主人,但在github比较告诉我,分支是相同的文件实际上是不是。这让我很生气,所以我的问题在这里:
合并后两个分支都被修改了?
在步骤4之后,分支A和B文件是否可能不相同?
如果是,那么哪些行动会有所不同?
由于
答案 0 :(得分:1)
当您将B合并到A中时,它只修改分支A.它将B中的任何更改(自分支)应用到A.分支B保持不变。这是预期的行为。
通常,如果您已完成个人“功能分支”的工作并将其合并到主分支或共享分支中,则现在可以删除功能分支。
答案 1 :(得分:1)
在git中,分支实际上只是对单个提交的引用。两个分支可以引用相同的提交,这将使它们相同,但在您的情况下,它们必须引用相同的提交。
假设这是您示例中第3步之后的两个分支的当前状态。 “A”和“B”是A和B标记的提交
A B
↑ ↑
o o
↑↗
o
↑
o
到目前为止,此图表中的每个提交都有一个父级。每次在分支中创建新提交时,都会将新提交作为当前提交的子提交,并更改分支以引用此新提交。
当您在git中合并时,您创建了一个合并提交,这是一个包含多个父项的特殊提交,它对每个父项都有不同的更改。
当您运行git merge
时,将创建此合并提交,并且只有您当前签出的分支才会向前移动以引用此新提交。以下是在您检出分支git merge B
时运行A
时会发生的情况(在您的示例中为步骤4):
A
↑↖
o B
↑ ↑
o o
↑↗
o
↑
o
正如您在此处所见,分支B
根本没有变化,而分支A
现在指的是新的合并提交。
合并提交中的文件状态可能是任何内容,但正常运行git merge
会尝试包含两个分支的更改组合,因为它们已经分歧。