赞
踩
我知道如何创建一个跟踪远程分支的新分支,但是如何使现有分支跟踪远程分支?
我知道我可以只编辑 .git/config 文件,但似乎应该有更简单的方法。
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
给定一个分支 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(1.8.0 之前)开始:
git branch --set-upstream foo upstream/foo
笔记:
以上所有命令都将导致本地分支 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
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
您可以执行以下操作(假设您已在 master 上签出并希望推送到远程分支 master):
如果您还没有“遥控器”,请设置它
git remote add origin ssh://...
现在配置master知道要跟踪:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
并推动:
git push origin master
真的需要遥控器和推送中的分支吗?我的意思是,只有当您签出的分支不是您想要推送的分支时,您才需要它,对吧?
是的 - 但从记忆中,您可能需要明确第一次推送。当然可以很容易地测试...... :)
+1 这是对 1.8 之前的 msysgit“预览”卡住的 Windows 用户的答案。感谢那。
这是唯一对我有用的答案。当我尝试接受的答案时,为现有分支设置上游远程,我得到:error: the requested upstream branch 'upstream/master' does not exist。
@SteveK 这很可能是因为您的上游被称为 origin 而不是 upstream。
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
我这样做是使用 -u 选项推动的副作用,如
$ git push -u origin branch-name
等效的长选项是 --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
要不就
$ git branch --set-upstream-to=origin/foo foo
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
本地分支已经在跟踪一个分支,所以我们可以假设已经添加了远程仓库。
Dopplerganger:请参阅 joachim 对已接受答案的评论。无论如何,假设很容易不同 - 它让事情变得如此有趣;)
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
grb 是一个 ruby gem,可以按照 their github 中的说明进行访问
OP 正在询问有关 Git 本身的问题。所以不要引入新工具可能会更好。
grb 是我的 macOS 安装中 git-rebase 的别名。我没有这样做:)
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
我相信早在 Git 1.5.x 中,您就可以像这样让本地分支 B R A N C H 跟 踪 远 程 分 支 o r i g i n / BRANCH 跟踪远程分支 origin/ BRANCH跟踪远程分支origin/BRANCH。
鉴于 B R A N C H 和 o r i g i n / BRANCH 和 origin/ BRANCH和origin/BRANCH 存在,并且您当前尚未签出 $BRANCH(如果有,请切换),请执行以下操作:
git branch -f --track $BRANCH origin/$BRANCH
这会将 $BRANCH 重新创建为跟踪分支。 -f 强制创建,尽管 $BRANCH 已经存在。如果有通常的默认值(即 git-config 参数 branch.autosetupmerge 为 true),则 --track 是可选的。
请注意,如果 origin/$BRANCH 尚不存在,您可以通过将本地 $BRANCH 推送到远程存储库来创建它:
git push origin $BRANCH
紧接着上一条命令将本地分支提升为跟踪分支。
git push origin $BRANCH 是我一直在寻找的。
在尝试了各种解决方案(包括如上所述设置上游)之后,没有任何效果。我想要做的就是将 1 个新提交从远程提交到我的本地分支中,并且我最初没有设置跟踪。命令 git branch -f --track $BRANCH origin/$BRANCH 可以解决问题。
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
主要是简单而简单的答案。
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
确保你运行:
git config push.default tracking
能够摆脱麻烦
这可能很方便。但是,我们可以注意到,根据 git-config(1) 手册页,tracking 是 upstream 的同义词已弃用。
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
编辑 .git/config 可能是最简单、最快的方法。无论如何,这就是用于处理远程分支的 Git 命令正在做的事情。
如果您不想手动处理文件(这并不难),您总是可以使用 git config 来完成…但同样,这只是编辑 .git/config 文件,反正。
当然,在使用 git checkout 时有一些方法可以自动跟踪远程分支(例如,通过传递 --track 标志),但这些命令适用于 new 分支,而不是现有分支。
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
简而言之
git branch --set-upstream yourLocalBranchName origin/develop
这将使您的 yourLocalBranchName 跟踪名为 develop 的远程分支。
@Quincy Check greg's answer - 改用 git push -u origin branch(或 --set-upstream-to)
@MadNik,--set-upstream 和 --track 有什么区别?我不太明白为什么我应该使用一个而不是另一个。
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
对于 1.6.x,可以使用 git_remote_branch 工具完成:
grb track foo upstream
这将导致 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+任务平台外包需求
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。