git clone and checkout in a single command

GitCloneCommitGit Checkout

Git Problem Overview


The following is the command I use to checkout a specific commit.

git clone git://repo.git/repo123
git checkout <commitID>

I want to do the above in one step - using a git clone command only.

The reason why I want to do this is, repo123 is very huge. So checking out the commit I want will save me a lot of time.

I am aware of --depth option. But in this case, it is of no use. Can anyone tell me how to do it?

Git Solutions


Solution 1 - Git

git clone u://r/l --branch x

still clones everything but sets the local HEAD to that branch so it's the one checked out.

Source:

> --branch <name>
> -b <name>
>Instead of pointing the newly created HEAD to the branch pointed to by the cloned repository’s HEAD, point to <name> branch instead. In a non-bare repository, this is the branch that will be checked out. --branch can also take tags and detaches the HEAD at that commit in the resulting repository.

Solution 2 - Git

Is your problem the checkout being to large or the repository itself? As git clone, well, clones a repository you usually get the whole repository in its full size. (unless you are doing a shallow clone as you already suggested.)

If it's really about the checkout of the wrong branch git help clone says:

   --no-checkout, -n
       No checkout of HEAD is performed after the clone is complete.

After cloning with -n you can manually check out

Solution 3 - Git

I was running into a same situation and it worked well with the Git Clone Command with --depth. And specify the branch-name/commit/Tag-Name at the end of the command with -b parameter.

Syntax:

git clone --depth 1 github.com:ORG-NAME/Repo.git -b <Branch-Name/Commit-Number/TAG>

Solution 4 - Git

I think you just want to be able to "walk away" and return when both steps have completed. I use this line for two long-running commands on a single line -- and I like to "time" the overall action.

The trick is the semi-colon between each command.

$ time (git clone git://repo.git/repo123 ; git checkout <commitID>)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2731584View Question on Stackoverflow
Solution 1 - GitjthillView Answer on Stackoverflow
Solution 2 - GitmichasView Answer on Stackoverflow
Solution 3 - GitMir S MehdiView Answer on Stackoverflow
Solution 4 - GitmobibobView Answer on Stackoverflow