协慌网

登录 贡献 社区

让现有的 Git 分支跟踪一个远程分支?

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

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

答案

给定分支foo和远程upstream

从 Git 1.8.0 开始:

git branch -u upstream/foo

或者,如果本地分支foo不是当前分支:

git branch -u upstream/foo foo

或者,如果您想键入更长的命令,这些命令等同于以上两个:

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

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

从 Git 1.7.0 开始:

git branch --set-upstream foo upstream/foo

笔记:

  • 以上所有的命令都将引起局部分支foo跟踪远程分支foo从远程upstream
  • 不推荐使用旧的(1.7.x)语法,而采用新的(1.8+)语法。新语法旨在更直观,更易于记忆。
  • 使用尚未获取的新创建的遥控器定义上游将失败。在那种情况下,事先运行git fetch upstream

另请参阅: 为什么我需要始终执行 `--set-upstream`?

您可以执行以下操作(假设您已在主服务器上签出并希望推送到远程分支主服务器):

如果您还没有设置 '遥控',请设置它

git remote add origin ssh://...

现在配置 master 来知道跟踪:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

并推:

git push origin master

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

$ git push -u origin branch-name

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

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

git branch --set-upstream已弃用,可能会在相对较远的将来被删除。 git branch [-u|--set-upstream-to]已经引入了一个更健全的参数顺序。

...

很有可能说git branch --set-upstream origin/master ,但是它告诉 Git 安排本地分支 “origin / master” 与当前签出的分支集成,这是用户意味着的极不可能的。该选项已弃用; 使用新的--set-upstream-to (使用 short-and-sweet -u )选项。

假设您有一个本地foo分支,并希望它以与其上游相同的名称处理分支。用这个来实现

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

要不就

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

给定分支foo和远程upstream

从 Git 1.8.0 开始:

git branch -u upstream/foo

或者,如果本地分支foo不是当前分支:

git branch -u upstream/foo foo

或者,如果您想键入更长的命令,这些命令等同于以上两个:

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

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

从 Git 1.7.0 开始:

git branch --set-upstream foo upstream/foo

笔记:

  • 以上所有的命令都将引起局部分支foo跟踪远程分支foo从远程upstream
  • 不推荐使用旧的(1.7.x)语法,而采用新的(1.8+)语法。新语法旨在更直观,更易于记忆。
  • 使用尚未获取的新创建的遥控器定义上游将失败。在那种情况下,事先运行git fetch upstream

另请参阅: 为什么我需要始终执行 `--set-upstream`?

您可以执行以下操作(假设您已在主服务器上签出并希望推送到远程分支主服务器):

如果您还没有设置 '遥控',请设置它

git remote add origin ssh://...

现在配置 master 来知道跟踪:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

并推:

git push origin master

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

$ git push -u origin branch-name

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

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

git branch --set-upstream已弃用,可能会在相对较远的将来被删除。 git branch [-u|--set-upstream-to]已经引入了一个更健全的参数顺序。

...

很有可能说git branch --set-upstream origin/master ,但是它告诉 Git 安排本地分支 “origin / master” 与当前签出的分支集成,这是用户意味着的极不可能的。该选项已弃用; 使用新的--set-upstream-to (使用 short-and-sweet -u )选项。

假设您有一个本地foo分支,并希望它以与其上游相同的名称处理分支。用这个来实现

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

要不就

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