为什么git push的工作方式不同于git push origin <branch>?

时间:2017-06-12 22:49:09

标签: git aws-codecommit

为什么这两个命令会产生这些结果:

  1. (主人签出) git checkout beta git push

  2. (已检出测试版) git push origin beta

  3. 我问,因为前者在AWS CodeCommit中导致错误(403),后者推送到分支就好了。此外,每当我结帐时,我都会收到警告,即我在原点分支前提交+20提交:

    “你的分支在38次提交之前领先'codecommit-origin / beta'。”

2 个答案:

答案 0 :(得分:1)

注意:这个答案一般适用于git push,而不适用于使用AWS的git

git push接收您要发送代码(origin)的参数,以及您发送代码的分支。因此,如果您在许多代码示例中看到,git push origin master会将代码从origin分支推送到master。如果输入命令git push origin beta,则从本地beta分支推送到远程origin存储库的beta分支。 git checkout是一个用于切换当前正在使用的分支的命令。因此,git checkout beta将本地存储库切换到beta branch,如果进行更改并提交它们(请确保提交)在切换分支之前!)它们只会在beta分支中发生变化。同样,git checkout master切换到您的主分支。您运行git push的分支无关紧要,因为您指定要作为第二个参数推送哪个分支。

答案 1 :(得分:1)

它与您的git config push.default设置有关。要查看您的设置:

$ git config -l

(请记住,您可以使用3种不同的git设置:global,system,local。使用--global --system--local运行上述命令,查看为每个设置设置的值。)

如果您只是使用git push但未指定要推送的 where ,则git将使用push.default设置的规则。为避免意外行为,请始终详细并指定要推送到的位置,即:git push origin beta

git push.default documentation