【发布时间】:2011-11-10 01:07:38
【问题描述】:
git clone 和git checkout 有什么区别?
【问题讨论】:
git clone 和git checkout 有什么区别?
【问题讨论】:
结帐手册页: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 也可用于其他用途,例如用另一个修订版中的文件版本覆盖工作副本中的文件。
git clone 是从远程 git 服务器获取你的仓库。
git checkout 是检查您想要的存储库状态(如分支或特定文件)。
例如,您当前在 master 分支上,并且想要切换到 develop 分支。
git checkout develop_branch
例如,您想签出特定文件的特定状态
git checkout commit_point_A -- <filename>
这里有good reference供你学习Git,让你更容易理解。
【讨论】:
git clone 也适用于本地存储库。
good reference 链接已损坏,您可能指的是这个 - marklodato.github.io/visual-git-guide/index-en.html
需要注意的一点是 git 中没有任何“复制”。那是因为您的本地存储库中已经有一个 完整 副本 - 您的本地存储库是您选择的上游存储库的 clone。因此,您实际上拥有所有内容的个人checkout,而无需在参考存储库中对这些文件进行“锁定”。
Git 提供 SHA1 哈希值作为验证您拥有的文件/目录树/提交/repo 的副本是否与能够在层次结构中将事物声明为“主”的人所使用的完全相同的机制的信任。这避免了所有那些导致大多数 SCM 系统阻塞的“锁定”(私有副本、大合并以及对源代码没有真正的控制或管理的常见问题 ;-)!
【讨论】:
简单的 git checkout 有 2 种用途
git checkout <existing_local_branch_name>
git checkout -b <new_feature_branch_name> 将使用 master 的内容创建一个新分支并切换到新创建的分支您可以在official site找到更多选项
【讨论】:
-b 选项非常棒,它创建了一个新的本地分支并在单个命令中同时检查它。喜欢它!
checkout 可用于多种情况:
第一种情况:在本地仓库的分支之间切换
例如 :
git checkout exists_branch_to_switch
您也可以使用-b创建新分支并在此案例中切换
git checkout -b new_branch_to_switch
第二种情况:从 x rev 恢复文件
git checkout rev file_to_restore
...
【讨论】: