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

Mag*_*oud 17 git

单程:

git checkout myBranch
git push origin myBranch:master
Run Code Online (Sandbox Code Playgroud)

其他方式:

git checkout master
git merge myBranch
git push
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别?

小智 11

这个:

git checkout myBranch
git push origin myBranch:master
Run Code Online (Sandbox Code Playgroud)

只是试图做一个快进(即非强制更新)的推myBranchmaster.如果master可以从myBranch,即master不包含任何myBranch不具有的提交,则推送将成功; 否则,推送将被拒绝.

由于您使用的是refspec,因此上述git checkout myBranch内容与之无关.您可以在Git Internals - The Refspec了解更多有关refspecs的信息.git pushmyBranch:master

这个:

git checkout master
git merge myBranch
git push
Run Code Online (Sandbox Code Playgroud)

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

因为myBranch实际上是合并的master,所以假设远程master位于本地的后面,即它不包含本地的也没有的提交,那么推送将成功,否则它将失败.