当前位置:   article > 正文

让现有的 Git 分支跟踪远程分支?_git 设置跟踪分支

git 设置跟踪分支

问题描述:

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

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

解决方案1:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

给定一个分支 foo 和一个远程 upstream

从 Git 1.8.0 开始:

git branch -u upstream/foo

  • 1
  • 2

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

git branch -u upstream/foo foo

  • 1
  • 2

或者,如果你想输入更长的命令,这些等价于上述两个:

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

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

  • 1
  • 2
  • 3
  • 4

从 Git 1.7.0(1.8.0 之前)开始:

git branch --set-upstream foo upstream/foo

  • 1
  • 2

笔记:

以上所有命令都将导致本地分支 foo 从远程上游跟踪远程分支 foo。

旧的 (1.7.x) 语法已弃用,取而代之的是新的 (1.8+) 语法。新语法旨在更直观、更容易记住。

当针对尚未获取的新创建的遥控器运行时,定义上游分支将失败。在这种情况下,请事先运行 git fetch upstream。

另请参阅:Why do I need to do --set-upstream all the time?

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

“上游”是遥控器的名称吗?即默认情况下大多数人会称之为“起源”?

@安德鲁:是的。 git branch --set-upstream master origin/master 相当于您最初克隆存储库时自动完成的操作。

在相关说明中,将其添加到您的 gitconfig 非常棒:“[push] default=tracking” 这将使推送将进入与拉取相同的位置:)

我得到“致命:不是有效的对象名称:'origin/master'。”

git push -u origin foo via

解决方案2:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

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

如果您还没有“遥控器”,请设置它

git remote add origin ssh://...

  • 1
  • 2

现在配置master知道要跟踪:

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

  • 1
  • 2
  • 3

并推动:

git push origin master

  • 1
  • 2

真的需要遥控器和推送中的分支吗?我的意思是,只有当您签出的分支不是您想要推送的分支时,您才需要它,对吧?

是的 - 但从记忆中,您可能需要明确第一次推送。当然可以很容易地测试...... :)

+1 这是对 1.8 之前的 msysgit“预览”卡住的 Windows 用户的答案。感谢那。

这是唯一对我有用的答案。当我尝试接受的答案时,为现有分支设置上游远程,我得到:error: the requested upstream branch 'upstream/master' does not exist。

@SteveK 这很可能是因为您的上游被称为 origin 而不是 upstream。

解决方案3:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

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

$ git push -u origin branch-name

  • 1
  • 2

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

git-branch 命令也可以理解 --set-upstream,但它的使用可能会令人困惑。 Version 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(带有简短的 -u)选项。

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

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

  • 1
  • 2
  • 3

要不就

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

  • 1
  • 2

解决方案4:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

对于 Git 1.8.0 及更高版本:

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

git remote add upstream 
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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

本地分支已经在跟踪一个分支,所以我们可以假设已经添加了远程仓库。

Dopplerganger:请参阅 joachim 对已接受答案的评论。无论如何,假设很容易不同 - 它让事情变得如此有趣;)

解决方案5:

huntsbot.com – 高效赚钱,自由工作

您可能会发现 git_remote_branch 工具很有用。它提供了用于创建、发布、删除、跟踪和跟踪的简单命令。重命名远程分支。一个不错的功能是您可以询问 grb 命令来解释它将执行哪些 git 命令。

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

grb 是一个 ruby gem,可以按照 their github 中的说明进行访问

OP 正在询问有关 Git 本身的问题。所以不要引入新工具可能会更好。

grb 是我的 macOS 安装中 git-rebase 的别名。我没有这样做:)

解决方案6:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

我相信早在 Git 1.5.x 中,您就可以像这样让本地分支 B R A N C H 跟 踪 远 程 分 支 o r i g i n / BRANCH 跟踪远程分支 origin/ BRANCHorigin/BRANCH。

鉴于 B R A N C H 和 o r i g i n / BRANCH 和 origin/ BRANCHorigin/BRANCH 存在,并且您当前尚未签出 $BRANCH(如果有,请切换),请执行以下操作:

git branch -f --track $BRANCH origin/$BRANCH

  • 1
  • 2

这会将 $BRANCH 重新创建为跟踪分支。 -f 强制创建,尽管 $BRANCH 已经存在。如果有通常的默认值(即 git-config 参数 branch.autosetupmerge 为 true),则 --track 是可选的。

请注意,如果 origin/$BRANCH 尚不存在,您可以通过将本地 $BRANCH 推送到远程存储库来创建它:

git push origin $BRANCH

  • 1
  • 2

紧接着上一条命令将本地分支提升为跟踪分支。

git push origin $BRANCH 是我一直在寻找的。

在尝试了各种解决方案(包括如上所述设置上游)之后,没有任何效果。我想要做的就是将 1 个新提交从远程提交到我的本地分支中,并且我最初没有设置跟踪。命令 git branch -f --track $BRANCH origin/$BRANCH 可以解决问题。

解决方案7:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

1- 使用 git fetch --all 更新您的本地元数据

https://i.stack.imgur.com/UBUNn.png

2-使用: git branch -a 显示您的远程和本地分支,请参见以下屏幕截图

https://i.stack.imgur.com/J1xB9.png

3-切换到要与远程链接的目标分支:使用

git checkout 分支名称

例子 :

https://i.stack.imgur.com/WeBwL.png

4-使用以下命令将本地分支链接到远程分支:

git branch --set-upstream-to nameOfRemoteBranch

注意:nameOfRemoteBranch:从步骤 2 的输出中复制“git branch -r”

使用示例:

https://i.stack.imgur.com/arZFk.png

主要是简单而简单的答案。

解决方案8:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

确保你运行:

git config push.default tracking

  • 1
  • 2

能够摆脱麻烦

这可能很方便。但是,我们可以注意到,根据 git-config(1) 手册页,tracking 是 upstream 的同义词已弃用。

解决方案9:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

编辑 .git/config 可能是最简单、最快的方法。无论如何,这就是用于处理远程分支的 Git 命令正在做的事情。

如果您不想手动处理文件(这并不难),您总是可以使用 git config 来完成…但同样,这只是编辑 .git/config 文件,反正。

当然,在使用 git checkout 时有一些方法可以自动跟踪远程分支(例如,通过传递 --track 标志),但这些命令适用于 new 分支,而不是现有分支。

解决方案10:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

简而言之

git branch --set-upstream yourLocalBranchName origin/develop

  • 1
  • 2

这将使您的 yourLocalBranchName 跟踪名为 develop 的远程分支。

@Quincy Check greg's answer - 改用 git push -u origin branch(或 --set-upstream-to)

@MadNik,--set-upstream 和 --track 有什么区别?我不太明白为什么我应该使用一个而不是另一个。

解决方案11:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

对于 1.6.x,可以使用 git_remote_branch 工具完成:

grb track foo upstream

  • 1
  • 2

这将导致 Git 使 foo 跟踪 upstream/foo。

原文链接:https://www.huntsbot.com/qa/EV2w/make-an-existing-git-branch-track-a-remote-branch?lang=zh_CN

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/696880
推荐阅读
相关标签
  

闽ICP备14008679号