合并时git如何解析?
也许这是个愚蠢的问题。但是当我开始使用Git时,有人告诉我,在处理一个特性分支时,在合并到master之前,我必须合并从master到我的分支的所有内容。现在,我可以从测试的角度来理解。在将代码合并到主代码之前,为了知道我的代码一切都正常工作,我应该首先在我的分支中进行测试,因此我必须从主代码合并到我的分支。 在我当前的项目中,我们有另一个工作流。我有一个功能分支,然后master充当一个暂存分支,然后我们有另一个生产分支。顺便说一句,工作流程不错 但这迫使我开始思考如何在git中进行分支和合并。如果开发人员D1创建一个分支a,开发人员D2随后创建一个分支B。开发人员D1执行一些工作并将分支a合并到主分支。现在D2将他的分支B合并到master。只有D2实际更改的文件才会合并到master,还是git会尝试合并D2创建分支时存在的所有文件,甚至是那些未更改的文件?D2在尝试合并之前是否应该从主分支合并到分支B,或者这无关紧要合并时git如何解析?,git,merge,Git,Merge,也许这是个愚蠢的问题。但是当我开始使用Git时,有人告诉我,在处理一个特性分支时,在合并到master之前,我必须合并从master到我的分支的所有内容。现在,我可以从测试的角度来理解。在将代码合并到主代码之前,为了知道我的代码一切都正常工作,我应该首先在我的分支中进行测试,因此我必须从主代码合并到我的分支。 在我当前的项目中,我们有另一个工作流。我有一个功能分支,然后master充当一个暂存分支,然后我们有另一个生产分支。顺便说一句,工作流程不错 但这迫使我开始思考如何在git中进行分支和合并
我的猜测是git只合并更改的文件,但我不是100%确定:)合并合并两个开发行的更改。因此,除非您告诉Git,否则它不会用
B
覆盖master
,但它会将在master
和B
上所做的更改合并为master
已合并成A
,这些更改在master
上进行,合并合并了两条开发线的更改。因此,除非您告诉Git,否则它不会用B
覆盖master
,但它会将在master
和B
上所做的更改合并为master
已合并成A
,这些更改在master
上进行,git中的合并操作始终作用于整个存储库,没有基于文件的合并
这就是说,它是一个每个文件的3路合并(和往常一样)。这意味着,如果将功能分支A
合并到master
:
- git将在
和A
之间找到最年轻的公共提交;让我们称之为master
oldmaster
- git将找到
和oldmaster
之间的差异,并尝试将这些差异(补丁)应用到当前A
;一个个文件。如果某个文件没有差异,它当然不会对该文件做任何操作master
- 最后,您得到一个(合并)提交;所有不同文件的所有补丁将作为一个提交;此提交将同时具有
和A
作为父级master
这就是“合并”的意思。合并并不意味着将所有内容从A复制到B,而是看看在这两者之间发生了什么变化,与公共父级C有关。git中的合并操作始终作用于整个存储库,没有基于文件的合并 这就是说,它是一个每个文件的3路合并(和往常一样)。这意味着,如果将功能分支
A
合并到master
:
- git将在
和A
之间找到最年轻的公共提交;让我们称之为master
oldmaster
- git将找到
和oldmaster
之间的差异,并尝试将这些差异(补丁)应用到当前A
;一个个文件。如果某个文件没有差异,它当然不会对该文件做任何操作master
- 最后,您得到一个(合并)提交;所有不同文件的所有补丁将作为一个提交;此提交将同时具有
和A
作为父级master
这就是“合并”的意思。“合并”并不意味着将所有内容从A复制到B,而是要查看在这两者之间发生了什么变化,与公共父级C有关。查看此问题的答案:查看此问题的答案: