git clone和git checkout有什么区别?


当前回答

需要注意的一点是git中没有任何“Copyout”。这是因为你已经在你的本地回购中有一个完整的副本-你的本地回购是你所选择的上游回购的克隆。因此,您可以有效地对所有内容进行个人签出,而无需在参考回购中对这些文件进行一些“锁定”。

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

其他回答

简单的git checkout有2个用途

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

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

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

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

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

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

Checkout可用于多种情况:

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

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

Git checkout -b new_branch_to_switch

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

Git校验rev file_to_restore ...

Git克隆是从远程Git服务器获取你的存储库。

Git签出是为了签出存储库的理想状态(如分支或特定文件)。

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

git checkout develop_branch

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

git checkout commit_point_A -- <filename>

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

需要注意的一点是git中没有任何“Copyout”。这是因为你已经在你的本地回购中有一个完整的副本-你的本地回购是你所选择的上游回购的克隆。因此,您可以有效地对所有内容进行个人签出,而无需在参考回购中对这些文件进行一些“锁定”。

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