2013-06-27 12 views
14

Es gibt etwas, das ich nicht verstehe mit der GIT Pull-Aktion. Ich habe ein Foobar Git Repository mit zwei Dateien: mit dem Namen f1 und f2. Zunächst einmal, ich klonen dieses Repo mit diesem Befehl:GIT ziehen: ersetzen lokale Version mit der Remote-Version

git clone [email protected]:foobar/foobar.git 

Ich mache einige falsche Modifikationen sowohl auf f1 und f2-Dateien, fügen sie Index git und dann zu begehen.

Ich entscheide jetzt, dass diese Änderungen falsch waren und ich meine Dateien mit der Remote-Version ersetzen möchte. Also verwende ich git pull, um dies zu tun:

GIT antwortet, dass das Projekt bereits auf dem neuesten Stand ist. Kann mir jemand helfen? Was stimmt damit nicht ? Wie soll ich fortfahren, um meine lokale Version durch die Remote-Version zu ersetzen? Danke, Ben.

Antwort

32
git fetch origin 
git reset --hard origin/master 

ist die gute Erklärung über git git pull

Die git fetch Einfuhren aus einer Remote-Repository verpflichtet in Ihrem lokalen Repo-Befehl ziehen. Die resultierenden Commits werden als Remote-Zweig gespeichert, anstatt auf die normalen lokalen Zweige, mit denen wir gearbeitet haben. Dies gibt Ihnen die Möglichkeit, Änderungen zu überprüfen, bevor Sie sie in Ihre Projektkopie integrieren.

Der Befehl git pull <remote> ruft die angegebene Remote-Kopie der aktuellen Verzweigung ab und führt sie sofort in die lokale Kopie ein. Dies ist das gleiche wie git fetch <remote> gefolgt von git merge origin/<current-branch>. Da es Merge ist, waren deine Commits immer noch da.

Nachdem Sie fetch getan haben, können Sie Ihre Arbeitskopie mit Reset-Befehl zurücksetzen. Hard soll alle Änderungen in Ihrer lokalen Kopie ignorieren. git reset --hard origin/master

+3

Sie haben Recht (obwohl das erste nicht notwendig ist, wenn alle Änderungen bereits lokal verfügbar sind), aber es würde dem OP wahrscheinlich helfen, wenn Sie erklären, was diese Befehle tun. – hvd

+1

hinzugefügt Erklärung des Problems – Tala

+0

Was, wenn wir eine bestimmte Datei nicht alles von orgin/Master ersetzen wollen? –

3

Pulling ist in erster Linie Ihren Remote-Repository mit Ihrem lokal einem verschmelzen. Eine kurze Antwort ist, dass nichts mit deinem Git-Setup falsch ist, da deine letzten Remote-Änderungen bereits in deinem lokalen Repository vorhanden sind. Wenn jemand anderes Änderungen an das Remote-Repository sendet, ist Pull praktisch. Diese Änderungen werden nach dem Ziehen in Ihr lokales Repository gezogen und zusammengeführt.

Verwandte Themen