如何在git中创建一个基于远程分支的分支


How to create a branch in git basing it on a remote branch

本问题已经有最佳答案,请猛点这里访问。

远程回购有一个分支,在本地回购上不存在。我需要获取它并开始使用它,而不需要将它与我拥有的任何其他分支合并。我该怎么做?


TL DR版本;

git fetch remote; git checkout branch

历史

在git设计师似乎有这个机会deliberately制造混乱,但其实是个蠢货把应有的演化路径。

在很老(在Git版本1.5天)你就直接关闭其他分行提供的URL库,完整的表征的库中的每一次。你可以想象得到,在长时间准确的测试库龄时间几乎所有的特性。有点一堆中间解决方案,然后有人来与远程的主意:你可以使用短名字样origin存储一切你可能想知道其他的Git仓库。

随着远端分支是远程跟踪。如果你的思想是,在Git调用另一个Git上过互联网电话和spends一些时间在它和retrieves整个堆新的东西,它可能是很吃了,在你自己的记忆库,每个支部提交他们,你提供的那些人。这是你的远程跟踪和分支:origin/masterorigin/develop,等等。

当你启动你的手机运行git git fetch originGit提交任何新球员时,他们提供了所有的分支和squirrels origin/branchAS。如果你没有让他们之前,你现在。

或远程跟踪分支

现在,您可以查看远程跟踪分支,但你能’t get on a远程跟踪分支:

1
$ git checkout origin/develop

正是origin/develop样发现commit ID):

1
2
$ git rev-parse origin/develop
39d22b9678b8c571aab6902620c95907d5bef2db

然后,一半是到git checkout

1
2
3
4
$ git checkout 39d22b9678b8c571aab6902620c95907d5bef2db
Note: checking out '39d22b9678b8c571aab6902620c95907d5bef2db'.

You are in 'detached HEAD' state. ...

(这是唯一的差分origin/developCAN使用Git的名字,如果你的手在你的安静git checkoutget '独立'的消息。)

创建一个本地分行

想和你git checkout -b branchput on a新创建的本地分行,从当前的提交。这是好的,但这意味着你要退房的远程跟踪分行第一。或者,你可以告诉git checkout -b在启动新的分支。然后,你应该设置它的跟踪(AS Git让它)其他分支,这让美国:

创建一个远程跟踪本地分行支行

现在,如果你是一位狡猾的origin/develop(或一些其他的origin/为支部的名字),你可以git checkouta正则,普通的本地分行使用的相同的名称,即使你没有一个。要注意到,developGit分支(而不是名字),所以它会扫描您的所有分支通过远程跟踪和发现这是一个很好的匹配名称在本案例origin/develop和认为你想请创建一个新develop和使它这样,它的轨道origin/develop起飞和相同电子提交。docx1〔3〕点吧"。

(这是这样一个普通的事情,它需要的是添加在GIT GIT版本1.6.6单反馈。)

等待,一个本地分支轨道远程跟踪分支?

是的。

但为什么它不是本地跟踪分支机构呢?

"本地"、"远程"和"跟踪"这两个词已经出现太多,更不用说"分支"这个词的多重含义了。您想让本地跟踪分支跟踪远程跟踪分支吗?如果您的本地分支机构跟踪另一个本地分支机构,会发生什么?:-)(是的,Git可以做到。)好的。

说真的,这个术语有点奇怪。它就是那样长大的。好的。其他一些事情

git branch命令有--set-upstream-to--unset-upstream。默认情况下,这些操作在当前分支上进行,或者如果指定了本地分支,则在本地分支上运行,并设置本地分支要跟踪的另一个分支的名称(对于--set-upstream-to),或者停止本地分支跟踪其要跟踪的内容(对于--unset-upstream)。它们使用"上游"这个词而不是"远程跟踪分支"这个短语,这是合理的,因为您可以将上游设置为另一个本地分支。这就是跟踪另一个分支的方法(不管它是否是远程跟踪分支)。好的。有一个本地分支跟踪其他分支有什么好处?为什么要麻烦呢?

它让git rebasegit merge知道要重新调整或合并什么,这样你就不必再输入了;它让git status计数保证你在本地分支上有另一个分支没有的(例如ahead 3和/或他们有你没有的(例如behind 12)。换句话说,这只是为了方便。不过很方便。味道很好,对你也有好处!好的。好啊。


您只需键入:

1
git fetch <remote>

要从遥控器中获取所有引用,

1
git checkout <remote>/<branch>

允许您将远程分支签出到"匿名"分支,

1
git checkout -b <new_local_branch>

基于签出的远程分支创建本地分支。

还可以将远程分支设置为上游:

1
git branch --set-upstream-to=<remote/branch> <new_local_branch>


这个Git checkout -b new_branch创建了一个名为"新分支"的新分支。

git pull origin remote_branch将代码从远程分支提取到新分支

1
2
git checkout -b new_branch
git pull origin remote_branch

或者你可以试试

1
git checkout -b <branch> --track <remote>/<branch>

参照物


我找到了一条路。这一个命令执行:

1
git fetch remote branch_name:branch_name


我不是git专家,但我想你可以切换到所需的分支,拉它,然后从中创建新的分支。
换言之:

1
2
3
git checkout remote_branch
git pull
git checkout -b new_branch

要获取远程分支,可以使用:

1
git fetch remote_name

其中,remote_name是正在使用的遥控器的名称,作为示例来源。