git克隆和签出有什么区别?

git clonegit checkout之间的区别是什么?

354095 次浏览

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

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

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

注意:对于那些有SVN/CVS背景和刚接触Git的人来说,在SVN/CVS中等价于git clone的是checkout。不同术语的相同措辞常常令人困惑。

git克隆用于从远程git服务器获取你的存储库。

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

例如,你目前在主分支上,你想切换到开发分支。

git checkout develop_branch

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

git checkout commit_point_A -- <filename>

这里有一个好的参考供你学习Git,让你更容易理解。

需要注意的一点是git中没有任何“Copyout”。这是因为你已经在你的本地回购中有一个完整的副本-你的本地回购是你所选择的上游回购的clone。因此,你有效地拥有了一切的个人checkout,而无需在参考回购中对这些文件进行一些“锁定”。

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

简单的git checkout有2个用途

  1. 在现有的本地分支之间切换,比如git checkout <existing_local_branch_name>
  2. 使用flag -b从当前分支创建一个新分支。假设你在master分支,那么git checkout -b <new_feature_branch_name>将创建一个包含master内容的新分支,并切换到新创建的分支

你可以在官方网站找到更多的选项

checkout可以用于多种情况:

1例:在本地存储库的分支之间切换 例如: Git签出exists_branch_to_switch < /代码> < / p >

在本例中,你也可以使用-b创建新的分支并切换

< p > <代码> Git checkout -b new_branch_to_switch < /代码> < / p >

2例:从x rev恢复文件

< p > <代码> Git校验rev file_to_restore
…< / p >