为什么git命令切换名为"git checkout"的分支?

Mic*_*ael 18 git git-checkout

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

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

Mar*_*air 13

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

  1. git checkout 做两件截然不同的事情,如果他们是单独的命令,对新手来说会有所帮助.

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

当然,人们总是可以使用不同的前端来使用git,比如简单的git,iolaus等等.但是大多数人最终还是要学习标准命令,所以你只需要习惯其中一些命名相当令人惊讶.

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


更新: VonC在评论中将答案与一个简洁的别名相关联,以便git checkout在其两种用法中更安全 ;)


Dav*_*vid 6

这是一个好名字,因为在签出分支时,您要求存储库为您(就像从库中"检出"书籍一样)将该分支中最新修订状态下的所有相应文件作为工作副本.

这里没有git checkout"其他含义"的问题.该命令为修订状态X提供单个文件或一组文件(读取:"分支").你是否认为"还原"是否缺少更大的一点,那git checkout就是灵活而且有点普遍.在这两种情况下,它都会从存储库中检出一定数量的状态并将其设置为您的工作副本,随时可以进行编辑.


Von*_*onC 6

我会将其命名为 git switch。

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

您可以使用git switch,就像您八年前建议的那样。

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

更多信息请参见Taylor Blau的“ Git 2.23 亮点” 。


Art*_*mak 2

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

这两个动作是:

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

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