git clonegit checkout有什么区别?

评论

相关:stackoverflow.com/questions/3329943/…

#1 楼

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

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

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

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

评论


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

– svick
2011年9月4日上午10:44

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

–科科多科
2015年5月25日晚上11:16

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

– 8月Lilleaas
15年5月26日在12:02

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

–佐尔坦·塔玛斯(ZoltánTamási)
15年11月20日在8:46

Fork是一个github术语,与git本身无关。

– 8月Lilleaas
15年11月24日在18:08

#2 楼

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

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

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

git checkout develop_branch


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

git checkout commit_point_A -- <filename>


这里是为您学习Git提供了很好的参考,可让您更轻松地理解。

评论


“来自远程git服务器”-不需要将服务器远程。 git clone也可以与本地存储库一起使用。

– SET
2012年11月28日在1:29

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

– David Pointer
16年8月10日在14:45

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

– S.N.
16-10-24在22:04

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

–C Perkins
20-2-19在22:10



#3 楼

要注意的一件事是git中缺少任何“复制”。那是因为您的本地存储库中已经有完整副本-您的本地存储库是所选上游存储库的clone。因此,您可以有效地对所有内容进行个性化设置,而无需在参考存储库中的这些文件上添加“锁定”。

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

评论


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

– wRAR
2011年9月4日13:27

#4 楼

简单地git checkout有2种用途


在现有本地分支之间切换,例如git checkout <existing_local_branch_name>

使用标志-b从当前分支创建一个新分支。假设您在master分支中,那么git checkout -b <new_feature_branch_name>将使用master的内容创建一个新分支,并切换到新创建的分支。

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

评论


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

– RBT
18年1月16日在6:29



#5 楼

checkout可用于多种情况:

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

您也可以创建新的分支并在这种情况下使用-b

git checkout -b new_branch_to_switch

第二种情况:从x rev

git checkout rev file_to_restore
恢复文件。 。