我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?

我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。


当前回答

对于git版本2.25.1,请使用以下命令:

git push --set-upstream origin <local_branch_name>

其他回答

对于Git 1.8.0及更高版本:

实际上,对于公认的工作答案:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR Git version 1.8.0 and higher:
git branch --set-upstream-to=upstream/qa
# Gitversions lower than 1.8.0
git branch --set-upstream qa upstream/qa

我这样做是因为使用-u选项推送的副作用,如

$ git push -u origin branch-name

等效的长选项是--set upstream。

gitbranch命令也理解--set upstream,但它的使用可能会令人困惑。1.8.0版修改了界面。

gitbranch-set-upstream已被弃用,可能会在较远的将来被删除。git分支[-u|--setupstreamto]是以更合理的参数顺序引入的。…很容易说git-branch——set-upstream-origin/master,但这告诉git安排本地分支“origin/matter”与当前签出的分支集成,这不太可能是用户的意思。该选项已弃用;改为使用新的--set upstream to(带有一个短而甜的-u)选项。

假设您签出了一个本地foo分支,并希望它使用与其上游同名的分支。让这一切发生

$ git branch --set-upstream-to=origin/foo

这不是对这个问题的直接回答,但我想在这里为任何在尝试配置上游分支时可能遇到与我相同问题的人留下一条注释。

小心push.default。

对于较旧的git版本,默认值为匹配,如果您有以下情况,则会导致非常不理想的行为:

本地分支机构“主”跟踪到原点/主

远程分支“上游”跟踪到上游/主分支

如果您在“上游”分支上尝试“git push”,则使用push.default匹配,git将自动尝试将本地分支“master”合并为“upstream/master”,从而导致大量混乱。

这会产生更理智的行为:

git-config—全局push.default上游

或简单地通过:

如果您还不在分支中,请切换到分支:

[za]$ git checkout branch_name

run

[za]$ git branch --set-upstream origin branch_name
Branch origin set up to track local branch brnach_name by rebasing.

您准备好:

 [za]$ git push origin branch_name

您可以查看配置文件,看看是什么通过运行以下命令来跟踪什么:

 [za]$ git config -e

很高兴知道这一点,它显示了哪些分支被跟踪,哪些分支没有被跟踪。:

  [za]$ git remote show origin 

这也行

git branch --set-upstream-to=/< remote>/< branch> < localbranch>