0


Git 获取远程分支

问:

遥控器包含各种分支,例如 origin/daves_branch:

$ git branch -r
origin/HEAD-> origin/master
origin/daves_branch
origin/master

如何在本地结帐 daves_branch 以跟踪 origin/daves_branch?我试过了:

$ git fetch origin discover
$ git checkout discover

答1:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

更新:使用 Git 开关

下面写的所有信息都是准确的,但添加了一个新命令 git switch 以简化工作。

如果远程存储库中存在 daves_branch,但本地分支中不存在,则只需键入:

git switch daves_branch

由于您在本地没有分支,这将自动使 switch 查看远程存储库。然后它还将自动设置远程分支跟踪。

请注意,如果本地不存在 daves_branch,您需要先git fetch,然后才能使用 switch。

原帖

您需要创建一个跟踪远程分支的本地分支。以下命令将创建一个名为 daves_branch 的本地分支,跟踪远程分支 origin/daves_branch。当您推送更改时,远程分支将被更新。

对于最新版本的 Git:

git checkout --track origin/daves_branch

–track 是 git checkout -b [branch] [remotename]/[branch] 的简写,其中 [remotename] 在本例中是 origin,而 [branch] 在本例中是 daves_branch 的两倍。

对于 Git 1.5.6.5,你需要这个:

git checkout --track -b daves_branch origin/daves_branch

对于 Git 1.7.2.3 及更高版本,这就足够了(它可能开始得更早,但这是我能很快找到的最早确认):

git checkout daves_branch

请注意,在最近的 Git 版本中,此命令不会创建本地分支,而是会将您置于“分离 HEAD”状态。如果您想要一个本地分支,请使用 --track 选项。

完整的详细信息在这里:3.5 Git Branching - Remote Branches, Tracking Branches

“git fetch” 以确保您的 repo 使用远程引用进行更新,并且“git checkout --track origin/discover”应该足够了。然后,您可以提交到该分支和“git push”以将远程与您的更改同步。
我试过这个并得到“致命:git checkout:更新路径与切换分支不兼容。您是否打算签出无法解析为提交的'upstream/develop'?”。难道我做错了什么?
看起来 git 1.5.6.5 需要这个: git checkout --track -b origin/daves_branch
这让我一团糟,它创建了一个名为 origin/ 的本地分支,它现在与远程分支 origin/ 模棱两可,我不知道如何摆脱疯狂的本地分支!
您需要显式添加本地分支名称,否则 git 会使用完整的分支路径创建一个新的本地分支,如上面的 @AlanMoore 和 @derekmx271 所述:git checkout -b --track daves_branch origin/daves_branch

答2:

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

我使用了 fetch,然后是 checkout…

git fetch  :
git checkout 

…其中 是远程分支或 source ref,而 是目前 不存在 本地分支或 destination ref 您想要跟踪并且您可能想要将其命名为与远程分支或源引用相同的名称。这在 的解释中的 options 下进行了解释。

Bash 非常聪明,如果我在远程分支的前几个字母之后按 Tab,它会自动完成第一个命令。也就是说,我什至不必命名本地分支; Bash 会自动为我复制远程分支的名称。谢谢,巴什!

同样如 the answer in this similar Stack Overflow post 所示,如果您不在 fetch 中命名本地分支,您仍然可以在使用 -b 标志检出它时创建它。 也就是说, git fetch 后跟 git checkout -b / 与我最初的答案完全相同。显然,如果您的存储库只有一个远程,那么您只需在 fetch 之后执行 git checkout ,它就会为您创建一个本地分支。 例如,您刚刚克隆了一个存储库,并希望从远程检查其他分支。

我相信 fetch 的某些文档可能是从 pull 逐字复制的。特别是 options 中的 部分是相同的。但是,我不相信 fetch 会永远merge,因此如果您将冒号的目标端留空,fetch 应该什么都不做。

注意:git fetch 是 git fetch : 的缩写,因此不会执行任何操作,但 git fetch 与 git fetch : 相同,应将远程 复制到本地。

我想这仅在您想在本地复制远程分支时才有用,但不一定要立即检查出来。否则,我现在将使用 the accepted answer,它在 checkout description 的第一部分以及稍后在 --track 的解释下的 options 部分中进行了详细说明,因为它是单行的。 嗯… 有点像单线,因为您仍然必须先运行 git fetch 。

仅供参考: 的顺序(来源:目的地)解释了 deleting remote branches 的奇怪的 pre Git 1.7 方法。也就是说,不向目标 refspec 推送任何内容。

这对我来说可以将远程代码放入本地分支。然而,它并没有让我的本地分支跟踪远程分支。
出于某种原因,git fetch remote branch 根本没有为我添加分支头,尽管所有的 refs 都被获取了,所以当我尝试按照接受的答案中的步骤操作时,我得到了 pathspec did not match any file(s) known to git. 的错误,但是rbranch:lbranch 方法有效。有趣的是,它还获取了所有以相同前缀开头的标签,就像它是通配符 (rbranch*)。
Nit: git 不做自动完成,它是 bash shell 做的。
FWIW,我认为这个答案和接受的答案之间的区别在于这个答案告诉你执行 fetch 命令。不过,接受的答案是有道理的,因为 OP 指出他已经进行了提取。这至少是我遇到的问题。
嗨@Honey,正如answer above所述:“显然,如果您的仓库只有一个遥控器,那么您可以在 fetch 之后执行 git checkout 它会为您创建一个本地分支。例如:您刚刚克隆了一个 repo 并想从远程检查其他分支。”同样在 git-checkout docs 中:“如果未找到 但在一个具有匹配名称的远程(称为 )中确实存在跟踪分支,则视为等同于:$ git checkout -b --track /”

答3:

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

如果您尝试“签出”一个新的远程分支(仅存在于远程,而不是本地),这就是您需要的:

git fetch origin
git checkout --track origin/

这假设您想从原点获取。如果不是,请将 origin 替换为您的远程名称。

通常,我使用 git fetch,但问题是 git fetch 和 git fetch origin 有什么区别?
@PingWoo 假设您要获取的分支位于远程 origin 中,git fetch 和 git fetch remote 都会做同样的事情。如果您需要从 origin 以外的远程获取,您可以使用 git fetch 来完成。这种情况很少见,这里只是为了完整起见。
我得到fatal: 'fusedwm/fuse_keybindings-setborderpx-alphabar-transparency-monrules-nowarpresize' is not a commit and a branch 'fuse_keybindings-setborderpx-alphabar-transparency-monrules-nowarpresize' cannot be created from it

答4:

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

要检查远程而不是本地存在的 myBranch - 这对我有用:

git fetch --all
git checkout myBranch

我收到了这条消息:

Branch myBranch set up totrack remote branch myBranch from origin
Switchedtoanew branch 'myBranch'
换句话说,您不必写 -t?
我认为这个答案有错误。我最初在没有 -t 的情况下执行命令并得到 You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.,因为没有同名的本地分支。我不得不用 -t 重新运行才能修复。
这对我来说效果很好——我的同事添加了一个新的远程分支,我想将它添加到我的本地存储库中。我一直在取,但没有看到新分支出现在本地。没有意识到我可以运行 checkout 来创建它。谢谢!
取决于 git 版本。最新版本,正如这里其他地方所说,只需要 git checkout 。小心同名的本地分支和远程分支 - 他们会把事情搞砸
--all 绝不是一个好主意,因为它会下载每个分支上的每个文件。这将需要更多的时间和空间。最好具体说明分支名称并像 this

答5:

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

在本地获取分支:

git fetch origin 

移动到那个分支:

git checkout 
不带其他分支
@BenjaminHarel 问题说“获取远程分支”并非所有分支。为此,这可能对您有所帮助stackoverflow.com/questions/10312521/…
使用此 fetch 命令后,所需的分支将在本地计算机上可用。 git checkout -b 'your_branch' origin/'remote branch' 是签出此分支所必需的。

答6:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

使用 git branch -a(本地和远程分支)或 git branch -r(仅远程分支)查看所有远程及其分支。然后,您可以对远程执行 git checkout -t remotes/repo/branch 并创建本地分支。

还有一个 git-ls-remote 命令可以查看该遥控器的所有参考和标签。

git checkout remotes/repo/branch 使 git checkout 查找路径规范,而不是远程存储库。
是的,甚至可以在远程仓库上签出一个分支吗?显然(或者可能不是那么明显),首先获取遥控器,以便您在本地拥有它们。 git book 中有一个很好的部分:git-scm.com/book/en/Git-Branching-Remote-Branches
git checkout -t remote_branch_name 可能是所有答案中最简单和最懒惰的方法。

答7:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

标题和问题混淆了:

Git 获取远程分支

我的同事怎么能专门拉那个分支。

如果问题是,我怎样才能得到一个远程分支,或者我怎样才能 Git 签出一个远程分支?,一个更简单的解决方案是:

使用 Git (>= 1.6.6),您可以使用:

git checkout 

如果未找到本地 <branch_name>,但在一个具有匹配名称的远程中确实存在跟踪分支,则将其视为等效于:

git checkout -b  --track /

See documentation for Git checkout

给你的朋友:

$ git checkout discover
Branch discover set up totrack remote branch discover
Switchedtoanew branch 'discover'
谢谢纪尧姆!我刚刚使用了这个命令并写了一篇关于它的帖子来描述我的确切情况:leniel.net/2014/05/…
按预期工作,谢谢 Guillaume!

答8:

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

要获取远程存在的分支,最简单的方法是:

git fetch origin branchName
git checkout branchName

您可以通过以下方式查看它是否已存在于远程:

git branch -r

这会将远程分支获取到您的本地并自动跟踪远程分支。

这个问题怎么没有更多的赞成票?我可能是错的,但这似乎确实可以解决问题,从远程获取我在本地没有的分支......

答9:

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

利用:

git checkout -b serverfix origin/serverfix

这是一个足够常见的操作,Git 提供了 --track 简写:

git checkout --track origin/serverfix

事实上,这很常见,甚至还有一条捷径。如果您尝试签出的分支名称 (a) 不存在并且 (b) 仅与一个遥控器上的名称完全匹配,Git 将为您创建一个跟踪分支:

git checkout serverfix

要使用与远程分支不同的名称设置本地分支,您可以轻松地使用具有不同本地分支名称的第一个版本:

git checkout -b sf origin/serverfix

现在,您的本地分支 sf 将自动从 origin/serverfix 拉取。

来源:Pro Git, 2nd Edition, written by Scott Chacon and Ben Straub(为便于阅读而删减)

那些速记是一个教训

答10:

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

使用这个简单的命令:

git checkout -b 'your_branch' origin/'remote branch'

答11:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

[快速回答]

有很多选择,我最喜欢的是:

  • 备选方案 1:
git fetch --all
git checkout YourBranch

使用远程存在但不在本地的分支使用此替代方法。

  • 备选方案 2:
git checkout -b 'YourBranch' origin/'YourRemote'

可能,这是最简单的方法。

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

原文链接:https://www.huntsbot.com/qa/QQA4/git-fetch-remote-branch?lang=zh_CN&from=csdn

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

标签: git github c++

本文转载自: https://blog.csdn.net/kalman2019/article/details/128439919
版权归原作者 HuntsBot 所有, 如有侵权,请联系我们删除。

“Git 获取远程分支”的评论:

还没有评论