众所周知,
git checkout
是一个非常重载的命令。我确实了解某些命令是为了分发而引入的,例如到git switch
。
在我使用以下命令之前:
$ git checkout <existing-branch>
$ git checkout <hash>
$ git checkout -b <new-branch-name>
所以我想知道
git switch
推出后,git-checkout
剩下的用途是什么?这是一个已弃用的命令吗?
保留它至少是为了向后兼容。想想数以百万计的仍在使用
git checkout
的脚本 — 我们是否应该赶紧重写所有这些脚本?当然不是。
实际上,它甚至没有被弃用。 文档中没有关于弃用的内容。另一方面,
git restore
和git switch
的文档说“此命令是实验性的。行为可能会改变。”
Git 2.46(2024 年第 3 季度),第 15 批 确认:
git checkout
将会继续存在。
请参阅 commit 028bb23、commit fcf0f48、commit 6ccf041、commit 57ec925(2024 年 6 月 14 日),作者:Patrick Steinhardt (
pks-t
)。gitster
-- 合并于 commit 166cdd8,2024 年 6 月 20 日)
:我们不打算弃用 git-checkout 的文档BreakingChanges
签字人:Patrick Steinhardt
命令被许多人认为难以理解,因为它连接了两个有些不相关的功能:在分支之间切换和从任意修订版本恢复工作树文件。git-checkout(1)
因此,在 2019 年,我们实现了两个新命令和git-switch(1)
,将这些单独的关注点拆分为独立的函数。git-restore(1)
的这种“替代”一再引发了我们用户群的担忧,即git-checkout(1)
最终会消失。git-checkout(1)
但情况并非如此:该命令的使用仍然很广泛,并且预计这种情况不会很快改变。记录所有三个命令将在可预见的未来保留。
如果我们发现大多数人都放弃了任何命令,则可能会重新考虑此决定。
BreakingChanges
现在包含在其 手册页中:
这对命令涵盖了
提供的功能git-checkout(1)
和git-restore(1)
。因为git-switch(1)
的使用仍然是 普遍存在,并且预计这种情况不会很快改变,所有 三个命令将保留。git-checkout(1)
如果我们发现存在以下情况,可能会重新考虑此决定 几乎不再有任何命令的用户。