push branch和merge to master之间的区别是什么?

时间:2013-08-14 03:27:25

标签: git

一种方式:

git checkout myBranch
git push origin myBranch:master

另一种方式:

git checkout master
git merge myBranch
git push

这两者有什么区别?

1 个答案:

答案 0 :(得分:8)

此:

git checkout myBranch
git push origin myBranch:master

只是尝试将myBranch推送到master进行快进(即非强制更新)推送。如果可以从master访问myBranch,即master不包含myBranch也没有的任何提交,那么推送将成功;否则,推送将被拒绝。

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

此:

git checkout master
git merge myBranch
git push

实际上将myBranch合并到master,然后尝试将其推送到远程(使用Git仓库的默认配置,远程将是原点)。

因为myBranch实际上已合并到master中,所以假设远程master在本地之后,即它不包含本地提交的提交,那么推动就会成功,否则就会失败。