Git 2.23 introduces一个新命令git switch
-阅读文档后,似乎与git checkout <branchname>
几乎一样,有人可以解释其中的区别或用例吗?
引入了两个新命令“ git switch”和“ git restore” 拆分“签出分支机构以推进其历史” “检查出索引以外的路径和/或需要处理的树状路径 单次“ git checkout”中的“前进当前历史记录” 命令。
答案 0 :(得分:27)
好吧,根据您链接到的文档,其唯一目的是分解并阐明git checkout
的两种不同用法:
git switch
现在可以用来更改分支,就像git checkout <branchname>
一样git restore
可以像git checkout --<path_to_file>
一样将文件重置为某些修订版本人们对使用git checkout
的这些不同方式感到困惑,正如您从Stackoverflow上有关git checkout
的许多问题中可以看到的。 Git开发人员似乎已经考虑到了这一点。
答案 1 :(得分:14)
git checkout
有点像瑞士军刀,有几种不相关的用途。
如果您修改文件但还没有上演更改,那么git checkout <filename>
将撤消修改,这是取消文件更改的快速简便的方法。您留在同一分支。
git checkout <branchname>
(如您所述)切换分支。
两个完全不同的用途,如果文件名和分支名称相似,可能会引起混淆。
将其作为两个命令更为清楚。
答案 2 :(得分:3)
switch
有一些局限性:目前,您可以将任何提交的从切换到<branch name>
,但是不可能将从切换到{{ 1}}到状态为 HEADED 的特定提交。因此,您需要使用<branch name>
(其中5efb是对任意提交的哈希引用的示例)