2012-07-06 5 views
36

Ich möchte eine exakte "Kopie" eines entfernten Zweigs, der in einen bestimmten lokalen Zweig "kopiert" wird.Wie man einen Remote-Git-Zweig sauber zu einem lokalen Repository holt/kopiert

Angenommen, ein Teammitglied hat eine experimentelle Funktion erstellt, die er in einem Zweig namens experiment im Remote-Repository eingecheckt hat. Ich möchte einen neuen Zweig in meinem lokalen Repository auschecken und den Zweig experiment, wie er ist, in meinen neu ausgecheckten Zweig "kopieren".

Ich möchte es nicht mit meinem Code zusammenführen - ich möchte meinen Code vollständig überschreiben, damit ich einen sauberen Blick darauf haben kann, was er im "Experiment" Zweig gemacht hat.

Wie würde man einen Remote-Zweig, den jemand anderes dem entfernten Repository in ein eigenes lokales Repository übertragen hat (fetch/pull/whatever ...), auf eine Weise "holen", die nicht versucht, eine Zusammenführung durchzuführen Ihr eigener lokaler Code?

+0

Ich behalte gerne eine separate Kopie meines lokalen Repos für solche Fälle. Es rettet Sie nicht nur vor Fehlern, es erlaubt mir, parallel zu arbeiten. – user1164937

Antwort

67

Wenn Sie nicht über verschmelzenden egal:

git reset --hard <remote>/<branch_name> 

Dies wird genau das tun, was Sie wollen: keine Verschmelzung, keine Rebasieren, einfach ausgedrückt die lokale Niederlassung zu genau dem gleichen Zustand wie die Fernbedienung ist.

In Ihrem Fall brauchen Sie das jedoch nicht. Sie mögen einen neuen lokalen Zweig erstellen, die den gleichen Zustand wie die Fernbedienung hat, so den Remote-Zweig angeben, wenn die lokale eine mit git checkout erstellen:

git checkout -b <my_new_branch> <remote>/<branch_name> 

Sie git reset --hard verwenden würden, wenn Sie bereits eine lokale Niederlassung haben (zum Beispiel mit einigen Änderungen), verwerfen Sie alle Änderungen, die Sie gemacht und stattdessen die genaue Version der Remote-Zweigstelle.

Um sicherzustellen, dass Sie den letzten Status der Remote-Zweigstelle haben, verwenden Sie git fetch <remote>, bevor Sie entweder auschecken oder zurücksetzen.

+7

Nicht zurücksetzen, um die Änderungen zu verwerfen. Gib stattdessen einen Stash. Viel sicherer. –

+2

Das hat zuerst nicht funktioniert, aber das liegt daran, dass ich nicht damit begonnen habe, die Fernbedienung zu holen. – David

+0

Ich verstehe diese Antwort nicht. Geben Sie "remote/" oder "/" anstelle von "Ursprung" oder etwas anderes für ein? – William

Verwandte Themen