git checkout -b branch_name
和git switch -c branch_name
有什么区别?
我尝试使用git command -h
命令查找答案,也在文档中寻找,但无法找到。在git的文档中,我找到了以下内容:
请注意,这将创建新分支,但不会将工作树切换到新分支;使用“git switch”切换到新分支。
但是无论我输入checkout还是switch命令,我的当前分支都会被更改。
git checkout -b branch_name
和git switch -c branch_name
有什么区别?
我尝试使用git command -h
命令查找答案,也在文档中寻找,但无法找到。在git的文档中,我找到了以下内容:
请注意,这将创建新分支,但不会将工作树切换到新分支;使用“git switch”切换到新分支。
但是无论我输入checkout还是switch命令,我的当前分支都会被更改。
总的来说,就像评论中提到的那样,git switch
和git checkout
在分支操作方面没有实际区别。
创建git switch
和git restore
的想法是由于新用户在使用git checkout
时遇到的多个问题和疑问。之前,您可以使用git checkout
切换到不同的分支,但还可以使用它来还原某个特定提交的更改,甚至可以为单个文件还原更改。
一些用户注意到的问题是,提交/文件操作和分支操作是非常不同的,并且将它们组合成单个命令可能会有问题。这就是为什么出现了两个新的命令restore
,用于允许还原更改,以及switch
,用于允许对分支进行操作。
总之,就分支切换而言,git switch
和git checkout
没有区别;就恢复文件或提交变更而言,git restore
和git checkout
也没有区别。你可以互换使用它们。唯一需要注意的是,switch
和restore
仍被标记为实验性功能,因此我不会将它们用于创建长期使用的脚本等。
git switch
与git restore
一起在最近的版本中引入,以便将旧的git checkout
不必要地分组在同一个命令中的非常不同的功能进行拆分。你在这里试图解决什么问题? - Romain Valeri