为什么git命令切换名为git checkout
的分支?
它真的有意义吗?
我会将其命名为git switch
。此外,git checkout
还有其他含义:例如还原文件(如svn revert
)
答案 0 :(得分:13)
我看到大多数其他答案都在解释git checkout
的作用以及为什么“结帐”可能是一种合理的描述方式。然而,虽然我非常喜欢git,但这确实触及了当我试图帮助人们理解系统时出现的两个严重的挫折点:
git checkout
做了两件截然不同的事情,如果他们是单独的命令,对新手来说会有所帮助。
愤世嫉俗的人可能会认为git的术语是故意选择混淆来自CVS和Subversion的人!你提到的那个(checkout
)就是一个很好的例子。另一个是commit
,它在git中完全是本地的,完全依赖于CVS / SVN中的服务器 - “记录”的darcs术语对于刚接触git的人来说需要更少的不学习。我喜欢的另一个例子是你在git中看到的消息“需要更新”,这实际上意味着"needs to be committed":)
当然,人们总是可以使用不同的前端来进行git,例如easy git,iolaus等等。但是大多数人最终还是要学习标准命令,所以你只需要他们必须习惯于其中一些人被命名得相当惊人。
我确信在git中有这些各种命令的名称的历史原因,但如果选择了不同的单词,它会有所帮助...
更新: VonC在两个用法中的an answer with a neat alias to make git checkout
safer评论中链接;)
答案 1 :(得分:6)
这是一个好名字,因为在签出分支时,您要求存储库为您提供(就像从图书馆“检出”书籍一样)在该分支中最新修订状态下的所有相应文件作为您的工作副本。
这里没有git checkout
具有“其他含义”的问题。该命令为您提供修订版状态X 的单个文件或一组文件(读取:“分支”)。无论你是否认为“还原”都缺失了更重要的一点,即git checkout
具有灵活性和一般性。在这两种情况下,从存储库中检出一些状态并将其设置为您的工作副本,随时可以进行编辑。
答案 2 :(得分:1)
因为该命令可用于执行两个操作,所以使用“checkout”关键字“有意义”。
这两项行动是:
如果要将提交ID与分支名称区分开来,也可以使用“ - ”参数
答案 3 :(得分:1)
checkout
指的是更新工作树中的文件。
还原还意味着将工作树中的文件更新为其先前的提交。
因此,在我看来,使用git checkout
更新或还原一个命令更为现实。
答案 4 :(得分:1)
我将其命名为git switch。
使用Git 2.23(2019年8月),您不再需要使用令人困惑的git checkout
命令。
您可以像八年前建议的那样使用 git switch
。
如果需要更新工作树(没有切换分支),则new command git restore
负责。
在 Highlights from Git 2.23 的“ Taylor Blau”中查看更多信息。