首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git结账来源#branch name# -b/#branch name#

git结账来源#branch name# -b/#branch name#
EN

Stack Overflow用户
提问于 2015-08-19 03:21:06
回答 2查看 2.1K关注 0票数 1

通常,当我想要切换到远程存储库上而不是本地上的另一个分支时,我会使用命令:git checkout origin/#branch name#而不是git checkout –b #branch name# origin/#branch name#,我在互联网上看到了这种用法。

这两个命令有什么不同?

EN

回答 2

Stack Overflow用户

发布于 2015-08-19 03:22:27

后者创建跟踪远程分支的本地分支,并应用于编辑。前者应该仅用于快速浏览远程分支。Got将只允许您在本地分支上进行更改,因此如果您使用前者,您将无法提交。最新版本的git允许你使用速记git checkout #branchname#,如果你有一个遥控器,它会自动创建一个分支跟踪origin/#branchname#

票数 1
EN

Stack Overflow用户

发布于 2015-08-19 03:32:10

前者将签出远程分支,这通常会导致以下警告:

您正处于“分离的头”状态。您可以查看周围,进行实验性更改并提交它们,并且可以通过执行另一次签出来丢弃在此状态下所做的任何提交,而不会影响任何分支。

如果您想创建一个新的分支来保留您创建的提交,您可以(现在或以后)通过使用-b和checkout命令来完成此操作。示例:

git签出-b new_branch_name

当您签出一个没有本地分支指向它的提交时,您最终得到了一个detached HEAD。这意味着,虽然您可以使用它做任何您想做的事情,但当您提交更改时,不会有指向您创建的提交的分支。唯一指向它的指针是HEAD,它是一个临时指针,当您切换分支时,它会发生变化。

因此,使用分离的头提交本质上意味着,如果您稍后不创建指向它们的分支,则您创建的所有提交都将丢失。

正如警告所指出的,您可以使用git checkout -b branch_name来做到这一点。这将创建一个指向HEAD的新分支,并签出该分支,将您重新置于安全状态。

现在,当您执行git checkout -b <branch> origin/<branch>操作时,基本上是同时执行这两项操作:您签出origin/<branch>并创建一个名为<branch>的本地分支,该分支指向该签出版本(并且您也切换到该分支)。所以你马上就到了一个安全的境地。

为此,该命令与以下命令相同:

代码语言:javascript
复制
# check out the remote branch into a detached HEAD
git checkout origin/<branch>
# create a new branch from the HEAD and check that branch out
git checkout -b <branch>

也与此相同:

代码语言:javascript
复制
# create a new local branch pointing to the remote branch
git branch <branch> origin/<branch>
# check out that branch
git checkout <branch>

顺便说一句。在处理新的远程分支时,有一个有用的快捷方式。例如,如果远程有一个分支foo,而您还没有本地分支foo,那么只需执行git checkout foo,Git就会识别出您可能想要创建一个跟踪远程分支foo的本地分支origin/foo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32080942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档