Ich habe gerade ein Git-Repository geklont und einen Zweig ausgecheckt. Ich arbeitete daran und beschloss dann, alle meine lokalen Änderungen zu entfernen, da ich die Originalkopie haben wollte.
Kurz gesagt, ich musste die folgenden zwei Befehle ausführen, um meine lokalen Änderungen zu entfernen
git checkout .
git clean -f
Meine Frage ist,
(1) Ist dies der richtige Ansatz, um lokale Änderungen zu beseitigen, oder teilen Sie mir bitte den richtigen Ansatz mit.
(2) Wann verwenden wir, git reset --hard
da ich auch ohne diesen Befehl zurücksetzen kann?
Vielen Dank
* Lösung: Hauptbearbeitung (en): 26.03.: * Viele vage Begriffe wurden durch eine git-spezifische Terminologie ersetzt [verfolgt / nicht verfolgt / inszeniert / nicht inszeniert]
Es kann nur drei Kategorien von Dateien geben, wenn wir lokale Änderungen vornehmen:
Typ 1. Staged Tracked-Dateien
Typ 2. Nicht bereitgestellte verfolgte Dateien
Typ 3. Nicht bereitgestellte nicht verfolgte Dateien, auch bekannt als nicht verfolgte Dateien
- Inszeniert - Diejenigen, die in den Staging-Bereich verschoben / Zum Index hinzugefügt werden
- Verfolgt - geänderte Dateien
- UnTracked - neue Dateien. Immer nicht inszeniert. Wenn inszeniert, bedeutet dies, dass sie verfolgt werden.
Was jeder Befehl tut:
git checkout .
- Entfernt NUR nicht bereitgestellte verfolgte Dateien [Typ 2]git clean -f
- Entfernt NUR nicht bereitgestellte nicht verfolgte Dateien [Typ 3]git reset --hard
- Entfernt NUR inszenierte verfolgte und nicht inszenierte verfolgte Dateien [Typ 1, Typ 2]git stash -u
- Entfernt alle Änderungen [Typ 1, Typ 2, Typ 3]
Fazit:
Es ist klar, dass wir beide verwenden können
(1) combination of `git clean -f` and `git reset --hard`
ODER
(2) `git stash -u`
um das gewünschte Ergebnis zu erzielen.
Hinweis: Verstecken, da das Wort "etwas (sicher) sicher und geheim an einem bestimmten Ort aufbewahren" bedeutet. Dies kann immer mit abgerufen werden git stash pop
. Die Wahl zwischen den beiden oben genannten Optionen ist also ein Aufruf des Entwicklers.
Vielen Dank an Christoph und Frederik Schøning.
Bearbeiten: 27.03
Ich dachte, es lohnt sich, auf die " Vorsicht " -Notiz zu achtengit clean -f
git clean -f
Es gibt kein Zurück. Verwenden Sie -n
oder, --dry-run
um eine Vorschau des verursachten Schadens anzuzeigen.
Wenn Sie auch Verzeichnisse entfernen möchten, führen Sie aus git clean -f -d
Wenn Sie nur ignorierte Dateien entfernen möchten, führen Sie aus git clean -f -X
Wenn Sie sowohl ignorierte als auch nicht ignorierte Dateien entfernen möchten, führen Sie aus git clean -f -x
Referenz: mehr zu git clean
: Wie entferne ich lokale (nicht verfolgte) Dateien aus dem aktuellen Git-Arbeitsbaum?
Bearbeiten: 20.05.15
Alle lokalen Commits in diesem Zweig verwerfen [Lokale Commits entfernen]
Um alle lokalen Commits in diesem Zweig zu verwerfen und den lokalen Zweig mit dem "Upstream" dieses Zweigs identisch zu machen, führen Sie ihn einfach aus git reset --hard @{u}
Referenz: http://sethrobertson.github.io/GitFixUm/fixup.html
oder tun git reset --hard origin/master
[wenn lokale Niederlassung ist master
]
Hinweis: 06/12/2015 Dies ist kein Duplikat der anderen SO-Frage, die als Duplikat markiert ist. Diese Frage befasst sich mit dem Entfernen lokaler GIT-Änderungen [Entfernen einer hinzugefügten Datei, Entfernen von Änderungen, die an einer vorhandenen Datei hinzugefügt wurden usw. und den verschiedenen Ansätzen; Wobei im anderen SO-Thread nur behandelt wird, wie das lokale Commit entfernt wird. Wenn Sie eine Datei hinzugefügt haben und diese alleine entfernen möchten, wird der andere SO-Thread nicht darüber diskutieren. Daher ist dies kein Duplikat des anderen]
Bearbeiten: 23.06.15
Wie kann ein bereits in ein Remote-Repository übertragenes Commit zurückgesetzt werden?
$ git revert ab12cd15
Bearbeiten: 01.09.2015
Löschen Sie ein vorheriges Commit aus dem lokalen Zweig und dem Remote-Zweig
Fall: Sie haben gerade eine Änderung an Ihrer lokalen Niederlassung vorgenommen und sind sofort zur Remote-Niederlassung gewechselt. Plötzlich wurde Ihnen klar: Oh nein! Ich brauche diese Änderung nicht. Jetzt was machen?
git reset --hard HEAD~1
[zum Löschen dieses Commits aus dem lokalen Zweig]
git push origin HEAD --force
[Beide Befehle müssen ausgeführt werden. Zum Löschen aus der Gegenstelle]
Was ist die Branche? Es ist die aktuell ausgecheckte Filiale.
Edit 09/08/2015 - Lokale Git- Zusammenführung entfernen :
Ich bin in einer master
Niederlassung und habe eine master
Niederlassung mit einer neu arbeitenden Niederlassung zusammengeführtphase2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
F: Wie kann man diese Zusammenführung loswerden? Versucht git reset --hard
und git clean -d -f
beide haben nicht funktioniert.
Das einzige, was funktioniert hat, ist eines der folgenden:
$ git reset --hard origin/master
oder
$ git reset --hard HEAD~8
oder
$ git reset --hard 9a88396f51e2a068bb7
[sha Commit-Code - Dies ist der Code, der vorhanden war, bevor alle Ihre Merge-Commits stattfanden.]
git stash -a
[oder --all] speichert auch die ignorierten und nicht verfolgten Dateien. git clean -x
Bereinigt auch ignorierte Dateien. git clean -X
bereinigt nur die ignorierten Dateien.