在推送新分支后自动设置上游

时间:2016-06-22 19:20:11

标签: git

事情就是这样:

$ git checkout -b new-branch
Switched to a new branch 'new-branch'

$ git push
...
 * [new branch]      new-branch -> new-branch

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
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> new-branch

我已经看到了其他问题,答案建议在第一次推送时执行git push -u。但我总是忘记这样做。

是否有一个配置选项可以在将新分支从我的仓库推送到远程仓库时自动设置上游跟踪分支?

3 个答案:

答案 0 :(得分:2)

  

[{1}}]创建分支时,[隐含-u是否有配置选项?

可能应该,但是没有。但是,您可以使用git push进行修复,就像在Git错误消息中一样。

与其他答案一样,您可以设置一些别名。要在fracz's answer上扩展一下,每次安全使用git branch --set-upstream-to选项:这将在每次推送时设置上游,但假设您总是推送到相同位置,你将&#34;改变&#34;每次从-uorigin/branch的上游,即实际上没有任何改变。

除了进度输出之外,甚至没有办法判断origin/branch是否在遥控器上实际创建了分支。 (git push命令本身可以告诉,但只有报告这个消息,push[new branch]。)你可以通过运行{在推送之前{1}},但这里有一场比赛:如果[new branch]报告分支不存在,并且推送成功,则您不确定您的推送是否创建了它,因为其他人创造它的可能性很小,但无论如何你的推动都成功了。

然而,在git ls-remote开始之前,很容易判断是否存在上游。

这是一个(有些不完美且完全未经测试)的脚本,可以完成我认为ls-remote应该实际做的事情。

git push

答案 1 :(得分:1)

您可以通过创建自动使用-u开关的别名来实现您可以使用的内容。例如:

git config --global alias.pu "push -u"

然后像

一样使用它
git pu

很遗憾,您无法使用git别名覆盖任何原始 git命令。您可以尝试shadow git push command with a bash alias并默认添加-u开关。

答案 2 :(得分:-1)

首次使用git push -u origin <branch>。这将设置跟踪。