2013-08-30 7 views
18

Der folgende Befehl ist zum Auschecken eines bestimmten Commit verwendet.Git Clone und Checkout in einem einzigen Befehl

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

Ich möchte das oben in einem Schritt tun - nur mit einem Git Clone-Befehl.

Der Grund, warum ich das tun möchte, ist, repo123 ist sehr groß. Wenn ich also das Commit überprüfe, das ich möchte, werde ich viel Zeit sparen.

Ich kenne --depth Option. Aber in diesem Fall ist es nutzlos. Kann mir jemand sagen, wie es geht?

+0

Was ist das Problem von - Tiefe? – michas

Antwort

2

Ich lief in eine gleiche Situation und es funktionierte gut mit dem Git Clone Command mit --depth. Und geben Sie den Verzweigungsnamen/commit/Tag-Name am Ende des Befehls mit dem Parameter -b an.

Syntax:

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

Funktioniert das wirklich für einen Commit SHA1? Ich habe es mit git 2.5.0 versucht und obwohl es Branchennamen und Tags akzeptiert, funktioniert es nicht mit commits. – meowsqueak

2

Ist Ihr Problem der Kasse zu groß ist oder der Repository selbst? Wie git clone, klont ein Repository Sie normalerweise das gesamte Repository in seiner vollen Größe. (., Wenn Sie einen flachen Klon tun, wie Sie bereits angedeutet)

Wenn es wirklich um die Kasse des falschen Zweig git help clone sagt:

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

Nachdem mit -n Klonen Sie manuell

überprüfen können
21
git clone u://r/l --branch x 

klont immer noch alles, aber setzt den lokalen HEAD auf diesen Zweig, also ist es derjenige, der ausgecheckt wurde.