使用git自动跟踪远程分支

时间:2015-04-02 20:42:34

标签: git

当我使用本地分支mybranch时,我希望能够仅使用origin mybranchgit push来推送git pull。事实上,我必须冗长地写出git push origin mybranchgit pull origin mybranch。如果我尝试仅使用git pull,我会得到:

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 个答案:

答案 0 :(得分:10)

一种可能的解决方案是将您的git推送行为修改为current(请注意,这也会产生其他一些副作用)。您可以通过直接修改~/.gitconfig(作为文件,假设您使用的是Linux)或执行以下命令来执行此操作:

git config --global push.default current

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

答案 1 :(得分:8)

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

如果您使用mybranch 在本地创建git checkout,则它已在本地存储库中以origin/mybranch存在,您只需git checkout mybranch和您的本地git会看到origin/mybranch存在并创建本地mybranchorigin/mybranch作为其上游。

另一方面,如果origin/mybranch尚不存在且您在mybranch或类似地方创建git checkout -b,则无法将其设置为跟踪上游分支尚不存在(您可以配置它来跟踪该分支,但您偶尔会抱怨上游版本不存在)。

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

git push -u origin mybranch

告诉您的本地git将mybranch推送到origin ,完成后,将origin/mybranch设置为{{1}的跟踪分支}}

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