Git命令-checkout与switch的区别

6

git checkout -b branch_namegit switch -c branch_name有什么区别?

我尝试使用git command -h命令查找答案,也在文档中寻找,但无法找到。在git的文档中,我找到了以下内容:

请注意,这将创建新分支,但不会将工作树切换到新分支;使用“git switch”切换到新分支。

但是无论我输入checkout还是switch命令,我的当前分支都会被更改。


你为什么假设存在差异?git switchgit restore一起在最近的版本中引入,以便将旧的git checkout不必要地分组在同一个命令中的非常不同的功能进行拆分。你在这里试图解决什么问题? - Romain Valeri
3
说实话,有两个执行完全相同操作的命令并不常见,所以假设这两个命令之间应该存在差异是很自然的。 - Dominik Wosiński
1个回答

11

总的来说,就像评论中提到的那样,git switchgit checkout在分支操作方面没有实际区别。

创建git switchgit restore的想法是由于新用户在使用git checkout时遇到的多个问题和疑问。之前,您可以使用git checkout切换到不同的分支,但还可以使用它来还原某个特定提交的更改,甚至可以为单个文件还原更改。

一些用户注意到的问题是,提交/文件操作和分支操作是非常不同的,并且将它们组合成单个命令可能会有问题。这就是为什么出现了两个新的命令restore,用于允许还原更改,以及switch,用于允许对分支进行操作。

总之,就分支切换而言,git switchgit checkout没有区别;就恢复文件或提交变更而言,git restoregit checkout也没有区别。你可以互换使用它们。唯一需要注意的是,switchrestore仍被标记为实验性功能,因此我不会将它们用于创建长期使用的脚本等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接