一种方式:
git checkout myBranch
git push origin myBranch:master
另一种方式:
git checkout master
git merge myBranch
git push
这两者有什么区别?
答案 0 :(得分:8)
此:
git checkout myBranch
git push origin myBranch:master
只是尝试将myBranch
推送到master
进行快进(即非强制更新)推送。如果可以从master
访问myBranch
,即master
不包含myBranch
也没有的任何提交,那么推送将成功;否则,推送将被拒绝。
前面的git checkout myBranch
与git push
无关,因为您使用的是refspec myBranch:master
。您可以在Git Internals - The Refspec了解有关refspecs的更多信息。
此:
git checkout master
git merge myBranch
git push
实际上将myBranch
合并到master
,然后尝试将其推送到远程(使用Git仓库的默认配置,远程将是原点)。
因为myBranch
实际上已合并到master
中,所以假设远程master
在本地之后,即它不包含本地提交的提交,那么推动就会成功,否则就会失败。