What is the difference between git clone and checkout?
What is the diff开发者_运维知识库erence between git clone
and git checkout
?
The man page for checkout: http://git-scm.com/docs/git-checkout
The man page for clone: http://git-scm.com/docs/git-clone
To sum it up, clone is for fetching repositories you don't have, checkout is for switching between branches in a repository you already have.
Note: for those who have a SVN/CVS background and new to Git, the equivalent of git clone
in SVN/CVS is checkout
. The same wording of different terms is often confusing.
git clone is to fetch your repositories from the remote git server.
git checkout is to checkout your desired status of your repository (like branches or particular files).
E.g., you are currently on master branch and you want to switch into develop branch.
git checkout develop_branch
E.g., you want to checkout to a particular status of a particular file
git checkout commit_point_A -- <filename>
Here is a good reference for you to learn Git, lets you understand much more easily.
One thing to notice is the lack of any "Copyout" within git. That's because you already have a full copy in your local repo - your local repo being a clone
of your chosen upstream repo. So you have effectively a personal checkout
of everything, without putting some 'lock' on those files in the reference repo.
Git provides the SHA1 hash values as the mechanism for verifying that the copy you have of a file / directory tree / commit / repo is exactly the same as that used by whoever is able to declare things as "Master" within the hierarchy of trust. This avoids all those 'locks' that cause most SCM systems to choke (with the usual problems of private copies, big merges, and no real control or management of source code ;-) !
Simply git checkout have 2 uses
- Switching between existing local branches like
git checkout <existing_local_branch_name>
- Create a new branch from current branch using flag -b. Suppose if you are at master branch then
git checkout -b <new_feature_branch_name>
will create a new branch with the contents of master and switch to newly created branch
You can find more options at the official site
checkout
can be use for many case :
1st case : switch between branch in local repository
For instance :
git checkout exists_branch_to_switch
You can also create new branch and switch out in throught this case with -b
git checkout -b new_branch_to_switch
2nd case : restore file from x rev
git checkout rev file_to_restore
...
精彩评论