题 Git获取远程分支
我的同事和我在同一个存储库上工作,我们已经将它分成两个分支,每个分支在技术上用于不同的项目,但它们有相似之处,因此我们有时会想要从分支机构返回给* master。
但是,我有分支机构。我的问题是,我的同事怎么能专门拉那个分支?一个 git clone
repo似乎并没有为他本地创建分支,虽然我可以看到他们在推动我的结束后生活在一起。
此外,当我最初创建分支时,我做了 -b checkout
。不确定这是否有很大的不同?
iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
git fetch origin discover
git checkout discover
这些是我运行的命令。但它绝对不起作用。我希望能够检查该分支,然后推送并提交来自各个协作者或工作站的分支更改。
1602
2018-03-02 17:06
起源
答案:
您需要创建一个跟踪远程分支的本地分支。以下命令将创建一个名为的本地分支 daves_branch,跟踪远程分支 产地/ daves_branch。推送更改时,将更新远程分支。
对于大多数版本的git:
git checkout --track origin/daves_branch
--track
是简写 git checkout -b [branch] [remotename]/[branch]
[remotename]的地方 起源 在这种情况下和[分支]是两倍相同, 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
选项。
详情如下: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches
2225
2018-03-02 17:45
我用过 fetch
其次是 checkout
...
git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>
......在哪里 <rbranch>
是远程分支或 来源参考 和 <lbranch>
到现在为止 不存在的 当地分公司或 目的地参考 您想要跟踪以及您可能想要命名与远程分支或源ref相同的名称。这在下面解释 选项 在解释中 <refspec>
。
Git是如此聪明,如果我自动完成第一个命令 标签 在远程分支的前几个字母之后。 IE:我甚至不必命名本地分支,Git会自动为我复制远程分支的名称。谢谢Git!
也作为 在这个类似的SO帖子的答案 如果您没有在本地分支中命名,则显示 fetch
,当你通过使用它来检查它时,你仍然可以创建它 -b
旗。 IE: git fetch <remote> <branch>
其次是 git checkout -b <branch> <remote>/<branch>
与我最初的答案完全一样。如果你的回购有明显的话 只有一个 远程,然后你可以做 git checkout <branch>
后 fetch
它会为你创建一个本地分支。 例如: 你刚刚克隆了一个仓库,想要从遥控器上查看额外的分支。
我相信一些文档 fetch
可能已被逐字复制 pull
。特别是关于的部分 <refspec>
在 选项 是一样的。但是,我不相信 fetch
永远 merge
,这样,如果你将冒号的目的地一侧留空 fetch
什么都不做。
注意 git fetch <remote> <refspec>
是的缩写 git fetch <remote> <refspec>:
因此,什么都不会做,但是 git fetch <remote> <tag>
是相同的 git fetch <remote> <tag>:<tag>
应该复制遥控器 <tag>
本地。
我想这只有在您想在本地复制远程分支时才有用,但不一定要立即检查它。否则我现在会用 上面接受的答案,这将在第一部分详细解释 结帐说明 后来在 选项 部分解释 --track
,因为它是一个1班轮。 好... 有点像1班轮,因为你会的 仍然 必须跑 git fetch <remote>
第一。
仅供参考:的顺序 <refspecs>
(来源:目的地)解释了奇怪的前Git-1.7方法 删除远程分支。 IE:不推送任何内容到目的地refspec。
744
2018-04-19 00:45
如果您正在尝试“签出”新的远程分支(仅存在于远程分支,但不存在于本地),这就是您需要的:
git fetch origin
git checkout --track origin/<remote_branch_name>
这假设你想要从中获取 起源。如果没有,请更换 起源 由你的 远程 名称。
270
2018-05-17 12:14
检查远程存在而不是本地存在的myBranch - 这对我有用:
git fetch --all
git checkout myBranch
我收到了这条消息:
Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
88
2017-11-12 03:36
使用 git branch -a
(本地和远程分支机构)或 git branch -r
(只有远程分支)才能看到所有遥控器及其分支。然后你可以做一个 git checkout -t remotes/repo/branch
到远程并创建一个本地分支。
还有一个git ls-remote命令可以查看该远程的所有引用和标记。
37
2018-03-02 17:16
标题和问题混淆了:
- Git获取远程分支
- 我的同事怎么能专门拉那个分支呢。
如果问题是我如何获得远程分支以及如何git checkout远程分支,更简单的解决方案是:
使用git(> = 1.6.6),您可以使用:
git checkout <branch_name>
如果在当地 <branch_name>
找不到但是在一个具有匹配名称的遥控器中确实存在跟踪分支,视为等效于:
git checkout -b <branch_name> --track <remote>/<branch_name>
请参阅git checkout的文档
为你的朋友:
$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'
33
2018-03-31 10:48
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第二版,由Scott Chacon和Ben Straub撰写(为便于阅读而削减)
24
2018-03-18 00:21
git fetch
git branch -r
git checkout <branch_name>
12
2017-12-04 20:53