24

单程:

git checkout myBranch
git push origin myBranch:master

其他方式:

git checkout master
git merge myBranch
git push

这两者有什么区别?

4

1 回答 1

12

这:

git checkout myBranch
git push origin myBranch:master

myBranch只是尝试对to进行快进(即非强制更新)推送master。如果master从 可以到达myBranch,即master不包含任何myBranch不存在的提交,则推送将成功;否则,推送将被拒绝。

前面git checkout myBranch的内容与 refspec 无关git push,因为您使用的是 refspec myBranch:master你可以在Git Internals - The Refspec了解更多关于refspecs 的信息。

这:

git checkout master
git merge myBranch
git push

实际上合并myBranchmaster,然后尝试将其推送到远程(使用 Git 存储库的默认配置,远程将是源)。

因为myBranch实际上是合并到master的,那么假设远程master在本地之后,即它不包含本地也没有的提交,那么推送会成功,否则会失败。

于 2013-08-14T03:39:33.380 回答