2015-04-02 79 views
2

当我使用本地分支mybranch时,我希望能够使用只使用git pushgit pull。事实上,我必须单调地写出git push origin mybranchgit pull origin mybranch。如果我尝试使用刚刚git pull例如,我得到:使用git自动跟踪远程分支

There is no tracking information for the current branch. 
Please specify which branch you want to merge with. 
See git-pull(1) for details 

    git pull <remote> <branch> 

If you wish to set tracking information for this branch you can do so with: 

    git branch --set-upstream-to=origin/<branch> mybranch 

如果我进入git branch --set-upstream-to=origin/mybranch mybranch,那么它的工作原理。但是这与以前的命令几乎一样乏味。我可以让git做为默认行为吗?我见过类似的问题,答案往往表明新版本的git可以做到这一点,但我使用git 2.1.3版本,这是相当新的,所以它不能仅仅是这样。

+2

下一次你推,使用'git push -u origin mybranch'。从那时起,当你在'mybranch'上,'git push'和'git pull'就足够了。 – Jubobs 2015-04-02 20:55:32

回答

5

这不是github,它是你的本地git,完成所有这些。

如果您正在使用git checkout它已经在你的本地库中存在的origin/mybranch创建mybranch地方,你可以简单地git checkout mybranch和当地git会看到origin/mybranch存在与origin/mybranch作为其上游创建本地mybranch

在另一方面,如果origin/mybranch尚不存在,你正在与git checkout -b或类似的创建mybranch地方,你不能真正将其设置为跟踪不存在上游分支,但(你可以配置它追踪该分支,但偶尔会有上游版本不存在的投诉)。

在这种特殊情况下,对第一推(一个将上游创建分支),你可以使用:

git push -u origin mybranch 

告诉你当地的git推mybranchorigin ,一旦完成,请将origin/mybranch设置为mybranch的跟踪分支。

请注意,这与运行git branch --set-upstream-to的操作相同:您只需一次,之后它在本地设置,您不必再次操作。这只是更方便,因为您可以与push一起创建分支origin。但是你仍然必须记得这么做(一次;当你运行git push而没有-u origin mybranch时你会被提醒)。

+0

啊,我以为我已经避免特别提到github,但我错了。将解决。谢谢(你的)信息!我想我会创建一个bash别名来创建分支。 – 2015-04-02 23:01:17

2

一个可能的解决方案是将你的git推送行为修改为current(注意这也会产生一些其他副作用)。你可以做,要么通过直接修改您的~/.gitconfig(为一个文件,这是假定你是在Linux上)或通过执行:

git config --global push.default current 

现在,当你push,git会自动把你的当前分支到远程分支即使您没有明确指定,也可以使用同名。另外,如果您当前的分支没有远程等价物,则会创建一个远程分支,并且您当前的分支将被设置为跟踪它(与git push -u origin new_branch相同,但带有单个git push)。另请参阅this question,其中详细描述了git推送行为。

+0

而'git config --global pull.default current'用于自动提取与原始名称相同的分支。 – 2017-08-18 19:34:53

+0

@AlexanderRodin不工作,仍然要求用git'2.15.0'设置上游 – 2017-11-17 16:00:13