git 交替合并两个分支

git merging two branches interchangeably

假设我有两个分支 master 和 develop。这两个合并有什么区别:-

git checkout master
git merge develop

git checkout develop
git merge master

假设您有以下提交图:

master +--P-----+------+
           \
            \
development  +----+-----+-----+

第一个命令将导致:

master +--P-----+------+---------R1
           \                    /
            \                  /
development  +----+-----+-----+

第二条命令变为:

master +--P-----+------+-----------
           \                       \
            \                       \
development  +----+-----+-----+------R2

不同之处在于合并的结果将放在不同的分支上。

但是 R1R2 将具有相同的文件状态,因为合并意味着当且仅当没有冲突发生时应用与 P 的两个差异。

此外,您可以将 合并策略 更改为 ourstheirs、...以支持当前或其他分支的差异。所以:

git merge -s theirs development #first version

等同于:

git merge -s ours master #second version

最后,如果发生合并冲突,这当然会导致相反的冲突文件。 (因为冲突文件将当前分支放在第一位)。