19

为什么切换分支的 git 命令命名为git checkout?
这真的有意义吗?

我会命名它git switch。此外,git checkout还有其他含义:例如还原文件(如svn revert

4

5 回答 5

14

我看到大多数其他答案都在解释做什么git checkout以及为什么“结帐”可能是描述它的合理方式。然而,虽然我非常喜欢 git,但这确实触及了当我试图帮助人们理解系统时出现的两个严重的挫败点:

  1. git checkout做了两件非常不同的事情,如果它们是单独的命令,对新手会有帮助。

  2. 愤世嫉俗的人可能会认为 git 的术语是故意选择来混淆来自 CVS 和 Subversion 的人!您提到的 ( checkout) 就是一个很好的例子。另一个是commit,它在 git 中完全是本地的,并且完全依赖于 CVS / SVN 中的服务器——“记录”的 darcs 术语对于刚接触 git 的人来说需要更少的学习。我喜欢的另一个示例是您在 git 中看到的消息“需要更新”,这实际上意味着“需要提交” :)

当然,人们总是可以使用与 git 不同的前端,例如easy gitiolaus等,但大多数人最终还是要学习标准命令,所以你只需要习惯其中一些被命名相当令人惊讶。

我确信 git 中这些不同命令的名称有历史原因,但如果选择了不同的词会很有帮助......


更新: VonC在评论中链接到一个带有简洁别名的答案,以使其git checkout两种用法中的任何一种都更安全;)

于 2011-03-09T11:35:13.470 回答
6

这是一个好名字,因为在签出分支时,您要求存储库为您提供(就像从图书馆“签出”书籍一样)该分支中最新修订状态的所有适当文件作为您的工作副本。

这里不存在git checkout“其他含义”的问题。该命令为您提供修订状态 X的单个文件或一组文件(读取:“一个分支”)。无论您是否认为“还原”都忽略了更大的一点,即git checkout灵活且有点笼统。在这两种情况下,它都会从存储库中检出一些状态并将其设置为您的工作副本,准备好进行编辑。

于 2011-03-09T11:06:31.240 回答
1

checkout指更新工作树中的文件。恢复也意味着将工作树中的文件更新为之前的提交。因此,在我的意义上,使用一个命令来更新或恢复使用git checkout.

于 2011-03-09T11:06:49.543 回答
1

因为该命令可用于执行两个操作,所以使用“checkout”关键字“有意义”。

这两个动作是:

  • 将文件上的修改重置为以前的提交 ID
  • 切换到分支

当您想区分提交 ID 和分支名称时,还可以使用“--”参数

于 2011-03-09T11:03:57.933 回答
1

我会把它命名为 git switch 。

使用 Git 2.23(2019 年 8 月),您不必再使用令人困惑的git checkout命令。

git switch正如八年前建议的那样,您可以改用。

如果您需要更新工作树(无需切换分支),则由新命令git restore负责。

在Taylor Blau的“ Git 2.23 的亮点”中查看更多信息。

于 2019-08-20T17:01:19.723 回答