git push不会创建/更新远程分支,而是直接更新远程

时间:2015-12-18 19:40:28

标签: git

最近,我的本地git改变了它将分支推送到远程的方式,我无法弄清楚原因。以前,我会使用以下命令创建新分支:

git checkout -b feature_x origin/master

然后,将新分支推送到远程(以创建Pull请求):

git push origin feature_x

直到上周,这个工作正常,但是,现在当我运行最后一个命令时,git直接推送到远程而不创建分支(或允许为该分支创建PR)。我想我必须在没有意识到的情况下改变设置,以适应这种情况,但我不确定是哪一个。有没有人知道什么会导致这种行为,也许还有一种方法可以回到旧的做事方式?

git push origin feature_x的输出:

To https://github.com/[URL]
  2826f0c..66748dc  feature_x -> master

配置:

push.default=tracking
core.editor=vim
core.askpass=git-gui--askpass
branch.autosetupmerge=true
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.origin.url=https://github.com/[URL]
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.feature_x.remote=origin
branch.feature_x.merge=refs/heads/master

2 个答案:

答案 0 :(得分:0)

请不要混淆分支和存储库。

您有两个不同的存储库。你的本地人和github的远程人员。

您在本地存储库中创建分支feature_x并在该本地分支上提交更改。

稍后您尝试将本地分支推送到远程存储库。完整的语法是:

git push origin src:dst

这意味着推送到名为origin的远程位置(可能配置为您的github存储库)并获取本地分支src并在远程存储库中将其命名为dst

您没有指定:dst,因此会使用默认值。

根据您的描述预期feature_x:feature_x,但您获得feature_x:master

git help push说:

   The <dst> tells which ref on the remote side is updated with this push.
   Arbitrary expressions cannot be used here, an actual ref must be named. If git
   push [<repository>] without any <refspec> argument is set to update some ref
   at the destination with <src> with remote.<repository>.push configuration
   variable, :<dst> part can be omitted---such a push will update a ref that
   <src> normally updates without any <refspec> on the command line. Otherwise,
   missing :<dst> means to update the same ref as the <src>.

感谢您的更新。

git branch -vv应该显示,您的功能分支正在跟踪origin/master。到目前为止这很好。但是push.default=tracking表示你想要推送到跟踪分支作为默认值。 - &GT;这解释了feature_x:master行为。

也许您想要push.default=currentpush.default=simple。 (由于git 2.0 simple也是默认值。)

答案 1 :(得分:-1)

您可以执行以下命令来更新上游

git push -u origin feature_x 

之后它应该开始正常工作