git clone和checkout有什么区别?


Answers:


337

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

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

综上所述,克隆用于获取您没有的存储库,签出用于在您已经拥有的存储库中的分支之间切换。

注意:对于具有SVN / CVS背景并且是Git新手的用户,git cloneSVN / CVS中的等同于checkout。不同术语的相同措辞常常令人困惑。


41
checkout也可以用于其他用途,例如用另一个修订版本的文件版本覆盖工作副本中的文件。
svick 2011年

8
以及何时使用“拉”和“结帐”?
Kokodoko

27
pull是获取加合并,checkout是仅对已获取的数据进行操作的本地操作。因此,这根本不像svn结帐。
8月Lilleaas

13
来自SVN世界,我也很困惑。哇..真是一团糟。在理想情况下,我将强制每个源代码控制系统制造商使用相同的术语。
佐尔坦陶马希

5
Fork是一个github术语,与git本身无关。
8月Lilleaas

123

git clone是从远程git服务器获取您的存储库。

git checkout用来检出所需的存储库状态(如分支或特定文件)。

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

git checkout develop_branch

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

git checkout commit_point_A -- <filename>

这是学习Git 的良好参考,可让您更轻松地了解Git。


20
“来自远程git服务器”-不需要将服务器远程。git clone还将与本地存储库一起使用。
2012年

1
感谢您链接到git的直观参考!
David Pointer

@Kit Ho:该链接可以作为参考,但对于像上面的人这样的关于git的基本问题的人来说,它的帮助不大。正如文章本身所说,“一旦您对git的工作原理有所了解,该站点可能会巩固您的理解”
SN

循环定义不是那么有用。用来描述克隆的单词“ fetch”是有用的,并且增加了含义,但是短语“ checkout is to checkout ...”并没有增加含义,实际上也没有帮助区分这两个操作之间的区别。
C Perkins

11

要注意的一件事是git中缺少任何“复制”。这是因为您的本地存储库中已经有完整副本-您的本地存储库是clone您选择的上游存储库中的一个。因此,您实际上拥有checkout一切的个人资料,而无需对参考存储库中的那些文件施加“锁定”。

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


4
这个问题没有提到锁,现在应该默认假定一个人不熟悉此概念,因此,只有明确提出要求时,才应解释与旧VCS的不同之处。
wRAR 2011年

6

简单地git checkout有2个用途

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

您可以在官方网站上找到更多选项


真好 这个-b选项很棒,它创建了一个新的本地分支,并在单个命令中同时将其检出。爱它!
RBT

2

checkout 可以用于许多情况:

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

您还可以创建新分支,并在这种情况下通过 -b

git checkout -b new_branch_to_switch

第二种情况:从x rev还原文件

git checkout rev file_to_restore ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.