什么';s git switch和git checkout之间的区别<;分行>;
Git 2.23一个新命令什么';s git switch和git checkout之间的区别<;分行>;,git,git-checkout,git-switch,Git,Git Checkout,Git Switch,Git 2.23一个新命令Git switch——在阅读文档后,它看起来与Git checkout几乎相同。有人能解释一下区别或用例吗 引入了两个新命令“git-switch”和“git-restore” 拆分“检查分支机构以推进其历史”和 “正在从索引和/或要处理的树中检出路径 从单一的“git签出”中推进当前历史 指挥部 git checkout有点像瑞士军刀,有几个不相关的用途 如果您修改了一个文件,但尚未进行更改,那么git checkout将撤消修改。。。取消对文件所做更改的快速简便方
Git switch
——在阅读文档后,它看起来与Git checkout
几乎相同。有人能解释一下区别或用例吗
引入了两个新命令“git-switch”和“git-restore”
拆分“检查分支机构以推进其历史”和
“正在从索引和/或要处理的树中检出路径
从单一的“git签出”中推进当前历史
指挥部
git checkout
有点像瑞士军刀,有几个不相关的用途
如果您修改了一个文件,但尚未进行更改,那么git checkout
将撤消修改。。。取消对文件所做更改的快速简便方法。你留在同一个部门
git checkout
(如您所述)切换分支
两种完全不同的用途,如果文件名和分支名相似,可能会导致混淆
将它作为两个命令更清晰。好吧,根据您链接到的文档,它的唯一目的是分割和澄清git checkout的两种不同用法:
现在可以用来更改分支,就像git开关
那样git checkout
可用于将文件重置为特定版本,就像git restore
所做的那样git checkout--
人们对使用
git checkout
的这些不同方式感到困惑,正如您在Stackoverflow上看到的关于git checkout
的许多问题一样。Git开发人员似乎已经考虑到了这一点。切换有一些限制:目前您可以从任何提交切换到
,但是不可能从
切换到具有分离头状态的特定提交。因此,您需要使用git checkout 5efb
(其中5efb是任意提交的哈希引用示例)InfoQ上有一篇关于这个主题的好文章:git团队是否计划反对git checkout
?我在使用它时没有看到任何弃用警告。但是有了git开关
和git恢复
,我现在觉得没有必要签出。然而,如果不是不推荐的话,Git团队只是让事情变得更加混乱,而不是更少。有人知道git签出的计划吗?如果它仍然有一个用例,是否有人可以添加或编辑一个答案来详细说明它的用例。@MikeWilliamson我不这么认为,你仍然需要git checkout
@BastianVenthur是的,谢谢!不幸的是,这意味着checkout
只会停留在少数时间使用的“角落案例”中。这将延长混乱的时间。但我想我们只能互相帮助度过难关了这似乎是一个很好的改变。做一个分支<代码>git签出
交换分支git签出
获取文件的特定版本<代码>git签出
是否删除对一个文件的更改<代码>git签出老实说,我想知道有多少正常的git工作流程可以通过使用各种标志来git签出
来完成。那么现在的想法是git签出
在技术上不再需要了吗?或者它仍然在用于某些事情,例如签出一个不是分支头的提交(移动到“分离头”模式)?@Mike你怎么能说签出不生成分支在你说签出生成分支后一句话?-b
标志的内部工作方式无关紧要。Mike我理解你关于操作和命令的观点,但这次讨论的是命令。除非我们使用超低级API,否则我们无法直接访问“操作”。我们只能访问命令。这是一个不必要的学究式的区别。有用的注意:对于那些习惯于git checkout-b
的人,你可以使用git switch-c
获得与你提到的相同的效果,使用相同名称的分支和文件是令人困惑的。我假设分支优先于文件,因为这通常更可取?或者这是怎么回事?@AgentM是的,没错。如果分支和文件具有相同的名称,则执行git checkout
会优先选择分支而不是文件。如果要签出文件而不是分支,则必须使用--
将其与选项分开。这是许多Git和其他Unix命令的常用习惯用法。我认为这实际上是一个特性,而不是一个bug(限制)<代码>开关是为更改分支而创建的,当您这样做时,您确实希望成为该分支的负责人<代码>签出是一种更通用的操作,它使您的工作副本符合历史记录中的任何给定状态(=提交)。由于任何分支名称都是该分支的头提交的别名,因此签出分支在技术上与签出任何其他提交没有区别。使用-d
您可以:git switch-d 6c13