【问题标题】:What is the difference between git clone and checkout?git clone 和 checkout 有什么区别?
【发布时间】:2011-11-10 01:07:38
【问题描述】:

git clonegit checkout 有什么区别?

【问题讨论】:

标签: git command


【解决方案1】:

结帐手册页:http://git-scm.com/docs/git-checkout

克隆手册页:http://git-scm.com/docs/git-clone

总而言之,clone 是用来获取你没有的仓库,checkout 是在你已经拥有的仓库中的分支之间切换。

注意:对于那些有 SVN/CVS 背景和 Git 新手来说,SVN/CVS 中的git clone 相当于checkout。不同术语的相同措辞常常令人困惑。

【讨论】:

  • checkout 也可用于其他用途,例如用另一个修订版中的文件版本覆盖工作副本中的文件。
  • 你什么时候使用“pull”和“checkout”?
  • pull 是 fetch 加合并,checkout 是本地操作,只对已经获取的数据进行操作。所以它根本不像 svn checkout。
  • 来自SVN世界,我也很困惑。哇..真是一团糟。在理想情况下,我会强制每个源代码控制系统制造商使用相同的术语。
  • fork 是 github 术语,与 git 本身无关。
【解决方案2】:

git clone 是从远程 git 服务器获取你的仓库。

git checkout 是检查您想要的存储库状态(如分支或特定文件)。

例如,您当前在 master 分支上,并且想要切换到 develop 分支。

git checkout develop_branch

例如,您想签出特定文件的特定状态

git checkout commit_point_A -- <filename>

这里有good reference供你学习Git,让你更容易理解。

【讨论】:

  • "来自远程 git 服务器" - 服务器不必是远程的。 git clone 也适用于本地存储库。
  • 感谢您提供指向 git 视觉参考的链接!
  • @Kit Ho:该链接作为参考很好,但对于像上面的人这样对 git 有基本问题的人来说没有多大帮助。正如文章本身所说,“一旦你对 git 的工作原理有所了解,这个网站可能会巩固你的理解”
  • 循环定义没有那么有用。用来描述克隆的“fetch”这个词是有用的并且增加了意义,但是“checkout is to checkout...”这句话并没有增加意义,实际上也没有帮助区分这两种操作之间的区别。
  • @Kit ho,您的 good reference 链接已损坏,您可能指的是这个 - marklodato.github.io/visual-git-guide/index-en.html
【解决方案3】:

需要注意的一点是 git 中没有任何“复制”。那是因为您的本地存储库中已经有一个 完整 副本 - 您的本地存储库是您选择的上游存储库的 clone。因此,您实际上拥有所有内容的个人checkout,而无需在参考存储库中对这些文件进行“锁定”。

Git 提供 SHA1 哈希值作为验证您拥有的文件/目录树/提交/repo 的副本是否与能够在层次结构中将事物声明为“主”的人所使用的完全相同的机制的信任。这避免了所有那些导致大多数 SCM 系统阻塞的“锁定”(私有副本、大合并以及对源代码没有真正的控制或管理的常见问题 ;-)!

【讨论】:

  • 这个问题没有提到锁,并且默认情况下现在应该假设一个人不熟悉这个概念,因此只有在明确询问时才应该解释与旧 VCS 的这些差异。跨度>
【解决方案4】:

简单的 git checkout 有 2 种用途

  1. 在现有的本地分支之间切换,例如git checkout &lt;existing_local_branch_name&gt;
  2. 使用标志 -b 从当前分支创建一个新分支。假设如果您在 master 分支,那么git checkout -b &lt;new_feature_branch_name&gt; 将使用 master 的内容创建一个新分支并切换到新创建的分支

您可以在official site找到更多选项

【讨论】:

  • 不错。这个-b 选项非常棒,它创建了一个新的本地分支并在单个命令中同时检查它。喜欢它!
【解决方案5】:

checkout 可用于多种情况:

第一种情况:在本地仓库的分支之间切换 例如 : git checkout exists_branch_to_switch

您也可以使用-b创建新分支并在此案例中切换

git checkout -b new_branch_to_switch

第二种情况:从 x rev 恢复文件

git checkout rev file_to_restore ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2018-11-23
    • 2022-11-10
    • 2011-12-20
    • 2020-03-05
    相关资源
    最近更新 更多