假设我有两个分支主人并且开发。这两个合并之间的区别是什么: -
git checkout master
git merge develop
和
git checkout develop
git merge master
答案 0 :(得分:2)
假设您有以下提交图:
master +--P-----+------+
\
\
development +----+-----+-----+
第一个命令将导致:
master +--P-----+------+---------R1
\ /
\ /
development +----+-----+-----+
第二个命令:
master +--P-----+------+-----------
\ \
\ \
development +----+-----+-----+------R2
因此,不同之处在于合并的结果将放在不同的分支上。
但是R1
和R2
将具有相同的文件状态,因为合并意味着当且仅当没有发生冲突时才应用与P
的差异。
此外,您可以使用ours
,theirs
,...更改合并策略,以支持当前或其他分支的差异。所以:
git merge -s theirs development #first version
与:
相同git merge -s ours master #second version
最后,如果发生 merge-conflict 的情况,这当然会导致相反的冲突文件。 (因为冲突文件首先放置当前分支。)