Git fetch remote branch
我的同事和我在同一个存储库中工作,我们在技术上将它分为两个分支,每个分支用于不同的项目,但它们有相似之处,因此我们有时会希望从
不过,我有一台
回购协议中的
另外,当我最初创建分支时,我做了
1 2 3 4 5 6 7 8 | $ git branch -r origin/HEAD -> origin/master origin/daves_branch origin/discover origin/master $ git fetch origin discover $ git checkout discover |
这些是我运行的命令。但它肯定不起作用。
我希望能够签出该分支,然后只推送和提交来自不同合作者或工作站的分支更改。
您需要创建一个跟踪远程分支的本地分支。下面的命令将创建一个名为Daves_branch的本地分支,跟踪远程分支来源/Daves_branch。推送更改时,远程分支将更新。
对于Git的最新版本:
1 | git checkout --track origin/daves_branch |
对于git 1.5.6.5,您需要:
1 | git checkout --track -b daves_branch origin/daves_branch |
对于Git 1.7.2.3及更高版本,这就足够了(可能早就开始了,但这是我能很快找到的最早的确认):
1 | git checkout daves_branch |
请注意,对于最新的git版本,此命令不会创建本地分支,并且会将您置于"分离的头"状态。如果您需要本地分支,请使用
我用过
1 2 | git fetch <remote> <rbranch>:<lbranch> git checkout <lbranch> |
…其中,
Git非常聪明,如果我在远程分支的前几个字母后加制表符,它就会自动完成第一个命令。我甚至不必给本地分支命名,Git会自动为我复制远程分支的名称。谢谢!
同样,正如本文中的答案所示,如果您不命名
我认为,一些有关
注:
我想这只在您想在本地复制一个远程分支时有用,但不一定要立即检查它。否则,我现在将使用上面接受的答案,在结帐说明的第一部分和随后的选项部分中,在
仅供参考:EDOCX1的顺序(来源:目的地)解释了删除远程分支的奇怪的pre-git-1.7方法。IE:不将任何内容推入目的地参考规范。
如果您试图"签出"一个新的远程分支(它只存在于远程,但不存在于本地),那么您需要:
1 2 | git fetch origin git checkout --track origin/<remote_branch_name> |
这假定您要从源站提取。如果没有,请用远程名称替换源站。
要签出远程存在而非本地存在的MyBranch-这对我很有用:
1 2 | git fetch --all git checkout myBranch |
我收到这个消息:
1 2 | Branch myBranch set up to track remote branch myBranch from origin Switched to a new branch 'myBranch' |
使用
还有一个git ls remote命令来查看该远程的所有引用和标记。
标题和问题混淆了:
- git获取远程分支
- 我的同事怎么能专门拉那个分支呢?
如果问题是如何让远程分支使用或如何Git签出远程分支,则更简单的解决方案是:
使用Git(>=1.6.6),您可以使用:
1 | git checkout <branch_name> |
如果找不到本地
1 | git checkout -b <branch_name> --track <remote>/<branch_name> |
请参阅文档了解Git签出
对于您的朋友:
1 2 3 | $ git checkout discover Branch discover set up to track remote branch discover Switched to a new branch 'discover' |
1 | git checkout -b serverfix origin/serverfix |
这是一个足够常见的操作,Git提供了--track速记:
1 | git checkout --track origin/serverfix |
事实上,这是很常见的,甚至有一个快捷方式的快捷方式。如果您尝试签出的分支名称(a)不存在,(b)只与一个远程服务器上的名称完全匹配,Git将为您创建跟踪分支:
1 | git checkout serverfix |
要使用与远程分支不同的名称设置本地分支,可以使用具有不同本地分支名称的第一个版本:
1 | git checkout -b sf origin/serverfix |
现在,本地分支sf将自动从origin/serverfix中提取。
资料来源:Pro Git第二版,作者:Scott Chacon和Ben Straub(为可读性而裁剪)
使用此简单命令:
1 | git checkout -b 'your_branch' origin/'remote branch' |
您也可以一次获取并签出远程分支:
1 | git fetch && git checkout the-branch-name |
最简单的方法,至少对我来说:
1 | git fetch origin <branchName> |
1 2 3 4 5 | git fetch git branch -r git checkout <branch_name> |
我打字
1 | git checkout <branch_name> |
并且得到
1 2 | Branch <branch_name> set up to track remote branch <branch_name> from origin. Switched to a new branch '<branch_name>' |
帮助我的是
1)查看所有可用的远程分支(例如"远程分支名称")。
1 | git branch -r |
2)使用远程分支名称创建本地分支
1 | git fetch && git checkout 'remote-branch-name' |
有时你被要求不要摆弄主分支机构,只在远程分支机构工作(我被要求这样做)。所以你所需要的只是远程分支。
因此,要单独克隆远程分支(没有主分支),请执行以下操作
1 | git clone url --branch remote_branch_name |
在哪里?远程分支名称是远程分支的名称
例如,
1 | git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15 |
这将确保使用远程分支的名称将远程分支克隆到本地分支。
现在,如果您提交代码并进行推送,代码将单独提交到该分支。
git fetch --all & git checkout
假设你的遥控器是[email protected],你想要它的随机分支。流程如下:
首先检查遥控器列表
git remote -v
如果上面命令的输出中没有[email protected]远程文件,则可以通过
git remote add xyz [email protected]
git fetch xyz
git checkout -b my_copy_random_branch xyz/random_branch
git branch -a
本地分支"我的拷贝"随机分支将跟踪远程设备的随机分支。
步骤如下:
然后在这个分支上工作,您可以通过键入来验证您是否在那个分支上。
1 | git branch |
它显示您当前所在的分支。
如果你已经这样了解你的远程分支…
1 2 3 | git remote => One => Two |
你知道你想结帐的分行名称,如br1.2.3.4,然后就可以了。
1 2 | git fetch One => returns all meta data of remote i.e. the branch name in question. |
只剩下结帐了
1 | git checkout br.1.2.3.4 |
然后再把它的任何新分支去掉。
简单尝试
$git pull origin您的分支机构名称
如果您有一个使用--depth 1克隆的存储库,那么列出的许多命令将无法工作。例如,请参见此处
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | % git clone --depth 1 https://github.com/repo/code Cloning into 'code'... cd code remote: Counting objects: 1778, done. remote: Compressing objects: 100% (1105/1105), done. remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0 Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done. Resolving deltas: 100% (87/87), done. Checking connectivity... done. Checking out files: 100% (1215/1215), done. % cd code % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % git fetch origin other_branch remote: Counting objects: 47289, done. remote: Compressing objects: 100% (15906/15906), done. remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0 Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done. Resolving deltas: 100% (30151/30151), completed with 362 local objects. From https://github.com/repo/code * branch other_branch-> FETCH_HEAD % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % |
在本例中,我将重新设置repo,但可能还有其他技术,例如git shallow clone(clone--depth)会错过远程分支。
我想给您一个命令,用于将所有远程分支提取到本地,并切换到所需的新创建的本地分支:
1 | git fetch && git checkout discover |
运行上述命令后,您将收到以下消息:
1 2 | Switched to a new branch 'discover' Branch discover set up to track remote branch discover from origin. |
第一行表示切换到新分支-为什么是新分支?它已经在远处了!.
但实际上您也必须在本地创建它,分支是从远程索引中获取的,并在本地为您创建的。
这里,
但第二行给出的信息比第一行给出的信息更多,第一行告诉我们:
我们的分支设置为具有相同名称的跟踪远程分支。
虽然
因为对于远程中的每个分支,您也必须在本地创建它,以便将其跟踪为
运行
检查你的
1 2 3 | [remote"randomRemote"] url = [email protected]:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/* |
如果有
否则,
您需要使用此命令向跟踪添加远程分支。运行后,请检查您的
运行
现在你可以运行
要获取远程存在的分支,最简单的方法是:
1 | git checkout branchName |
这将把远程分支提取到本地,并自动跟踪远程分支。
你用"git pull"把你的树枝分开。我将使用实际回购和分行名称来帮助,因为"lbranch"和"rbranch"很难解读。
让我们使用:
无论有多少个分支机构,您或任何同事都可以运行它来只拉您的分支机构:
1 2 | git init git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch |
。
一个简单的命令-"git checkout remote_branch_name"将帮助您创建一个在远程分支中具有所有更改的本地分支。
1 2 | git checkout -b branch_name git pull remote_name branch_name |