2012-10-01 12 views
10

ich ein Repository mitWas ist der "reset" -Befehl für ein git geklontes Repository?

git clone <address> 

i einige Änderungen vorgenommen haben heruntergeladen haben, und haben einige Dateien bearbeitet, jetzt will ich alles verwerfen und nur sicher sein, dass ich habe, was auf der Platte nichts anderes als die Original-Fernbedienung ist Version der Codebasis: Was ist der richtige Befehl?

Antwort

11

die Fernbedienung Unter der Annahme, Herkunft genannt

git reset --hard HEAD 
git checkout origin/master 
git branch -D master 
git checkout -b master 

dies Was tut, ist:

  1. (Optional, wenn git status sagt keine geänderten Dateien) alle geänderten Dateien auf dem Datenträger verwerfen (deshalb reset --hard)

  2. Überprüfen Sie den Remote-Master-Zweig (Hinweis: Sie befinden sich in einem "Detached Head" -Zustand)

  3. die lokale master Zweig löschen (Wegwerfen alle lokalen Änderungen)

  4. Rufen Sie den aktuellen Kopf als neuer master Zweig

Jetzt wollen Sie wahrscheinlich etwas etwas anderes tun ... dh Werfen Sie Ihre Änderungen nicht weg, sondern legen Sie sie einfach auf einen anderen benannten Zweig ...schließlich weiß man nie, wenn Sie sie wieder brauchen werden

git checkout -b my-silly-changes 
git branch -D master 
git checkout -b master origin/master 

, dass Ihre aktuellen Änderungen in einer neuen Filiale spart my-silly-changes genannt und entfernt dann den alten lokalen Zweig master genannt und schließlich neu erstellt von dem Remote-Kopf.

git branch --set-upstream-to=origin/master master

Wo:

+6

Sie sollten auch eine 'git clean -xfd' machen, um alle nicht aufgezeichneten Dateien loszuwerden (Build-Produkte, etc.) –

+0

cool wusste nicht darüber –

+2

Die ersten vier Befehle, obwohl korrekt, sind unnötig ausführlich. Wenn Sie auf "Master" sind, wird nur "git reset --hard origin/master" dasselbe wie die vier Befehle tun. Immer noch +1 für die Möglichkeit, einen lokalen Zweig zu erstellen. – sleske

0

Wenn Sie nichts unternommen haben, dann ist git reset --hard gerade genug.

Here ist eine gute Ressource, die erklärt, wie git mit seinen verschiedenen Modi zurückgesetzt wird (--hard, --mixed und --soft).

Haftungsausschluss:

git reset --hard ist ein unsicherer Betrieb. Es entfernt alle nicht übereinstimmenden Änderungen aus dem Arbeitsbaum und kann nicht rückgängig gemacht werden.

+0

* "Ich möchte alles verwerfen und nur sicher sein, dass das, was ich auf der Festplatte habe nichts anderes als die ursprüngliche Remote-Version der Codebasis" * - Die obige Methode scheint Lassen Sie Dateien im Dateisystem, die nicht Teil des Klons waren, wie 'configure' Skripte, die von' configure.ac' mit 'autoreconf' generiert wurden. Überlassen Sie es Git, eine einfache Aufgabe zu übernehmen und es bis unmöglich zu machen. – jww

1

Wenn Sie sicher sind Sie alle Dateien zu verwerfen, und verlieren alle Änderungen, können Sie (!):

git reset --hard origin/master 

Dies wird den Zustand Ihrer lokalen Kopie des „Master-Reset "verzweigen und von Ihrer Arbeitskopie auf die letzte Version, die Sie von Ihrem Upstream (Original Remote) abgerufen haben.

Hinweis: Dies setzt voraus, dass

  • Upstream-Repository Wenn "Ursprung" (die Standardeinstellung für git clone)
  • Sie arbeiten in einem Klon des entfernten master Zweig

genannt wird Wenn Sie in einem anderen Zweig als "Master" arbeiten, passen Sie den Befehl an:

git reset --hard origin/branch1 
-1

Sie können auch so etwas wie tun müssen

origin/master

ist die Remote-Zweig Sie verweisen soll, und

master

ist der lokale Zweig, den Sie arbeiten möchten