Git push并没有“推动”一个新的分支

时间:2013-08-13 16:58:43

标签: git git-push git-remote

我从我们的仓库检查了一个新分支。一切都适合我们的开发分支。但是在新的分支上“推”并没有做任何事情。

一切看起来都很正常 - 有2个提交推送。

-> git branch -vv
  develop   8ab7ef1 [origin/develop] Merge branch 'develop' of git.example.com:core-platform into develop
* hotfix112 8521cef [origin/hotfix/1.1.2: ahead 2] CORE-1263 - Completed merging from dev into hot fix.

但Push不做任何事情:

-> git push
Everything up-to-date

-> git status
# On branch hotfix112
# Your branch is ahead of 'origin/hotfix/1.1.2' by 2 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean

我发现'git pull'使用远程,但'git push'不使用:

-> git remote show origin
* remote origin
  Fetch URL: git@git.example.com:core-platform.git
  Push  URL: git@git.example.com:core-platform.git
  HEAD branch: develop
  Remote branches:
    core-platform-1.0.0 tracked
    develop             tracked
    hotfix/1.1.2        tracked
    master              tracked
    release/1.0.0       tracked
    release/1.1.1       tracked
  Local branches configured for 'git pull':
    develop   merges with remote develop
    hotfix112 merges with remote hotfix/1.1.2
  Local ref configured for 'git push':
    develop pushes to develop (up to date)
->

我无法弄清楚为什么hotfix112没有链接到遥控器,但拉动是。

如何修复此配置?

3 个答案:

答案 0 :(得分:2)

Git就像你所描述的那样,因为你有以下情况:

  • 您有一个跟踪不同名称的远程分支的本地分支(hotfix112)
  • 您将push.default选项设置为匹配(默认设置)或简单

与git的情况一样,你有几个选择如何设置git以按照需要行事:

1。)最简单的方法是更改​​本地分支的名称以匹配远程分支的名称。然后,推送开始自动工作。所以只需将分支'hotfix112'重命名为'hotfix / 1.1.2':

git branch -m hotfix112 hotfix/1.1.2

2.。)您可以通过将push.default选项设置为“tracking”来更改推送行为。因为您已经将分支'hotfix112'设置为跟踪origin / hotfix / 1.1.2,所以git push将按需运行。要设置本地git选项,请运行:

git config --local push.default tracking

3.。)您可以手动编辑.git / config文件并设置push以匹配本地refspec'hotfix112'到远程'hotfix / 1.1.2'。您应该在[远程“原点”]部分下面添加推线:

[remote "origin"]                                                               
  url = ...
  fetch = ...
  push = hotfix112:hotfix/1.1.2

第一种和第三种方法仅适用于hotfix112分支。第二个适用于该存储库中的所有跟踪分支(如果使用全局选项,则全局跟踪)。

答案 1 :(得分:0)

尝试git push origin / hotfix / 1.1.2(远程分支)hotfix112(本地分支),可能在推送到远程时会创建一个链接。很奇怪,虽然你没有分支。

答案 2 :(得分:0)

git push的当前行为(没有任何其他参数)是推送本地和远程存储库中具有相同名称的所有分支。由于您的本地分支名称与远程分支名称不同,因此如果您将其更改为匹配,git push应推送您的更改。请注意,这种行为将在未来的git版本(可能是2.0)中发生变化。见:http://article.gmane.org/gmane.comp.version-control.git/193308。如果您想立即更改git push的行为,请输入git help config并搜索" push.default"。