2013-11-27 6 views
53

Ich bin neu in der Git-Umgebung, und ich benutze BitBucket mit SourceTree auf dem Mac. Ich möchte jetzt nur die Änderungen seit dem letzten Commit verwerfen. Wie soll ich das machen? Ich habe nichts gefunden wie "Änderungen verwerfen", und es scheint nicht zu funktionieren, direkt vom letzten Commit zu ziehen. Lösungen, die entweder mit der GUI oder der Befehlszeile ausgeführt werden, sind gut. Vielen Dank.Wie verwerfen Sie nicht festgeschriebene Änderungen in SourceTree?

+0

Sie meinen, Sie möchten die letzte Festschreibung rückgängig machen? oder es verlassen und das vorherige Commit aus irgendwelchen Testgründen auschecken? –

+0

@MohammadAbuShady Ich denke, die Antwort ist weder. Seit dem letzten Commit habe ich einige Änderungen vorgenommen, die ich verwerfen möchte. Ich möchte mein letztes Commit zurück haben. – goldfrapp04

+0

Sie haben also Änderungen ohne Commit, die Sie zurücksetzen möchten? –

Antwort

35

Ich mag

git stash 

Diese speichert alle unbestätigten Änderungen in der stash verwenden. Wenn Sie diese Änderungen später nur git stash drop (oder git stash pop, um sie wiederherzustellen) verwerfen möchten.

Obwohl dies technisch nicht die "richtige" Möglichkeit ist, Änderungen zu verwerfen (wie andere Antworten und Kommentare darauf hingewiesen haben).

+5

gut, wenn Sie nur alle Dinge verwerfen möchten, ist es noch einfacher zu tun 'git reset --hard HEAD' –

+0

@Roberto Welche Antwort ist falsch und warum? – smileBot

+3

@cocoanut Ich denke, meine Antwort "falsch", weil dies ein Missbrauch der "Stash" -Funktion ist. Mohammads Antwort ist der richtige Weg, alle Veränderungen zu verwerfen. – Max

3

Ok ich habe gerade festgestellt, dass meine Frage bereits im Fragetitel beantwortet wurde.

Um unstage Dateien verwenden

git reset HEAD /file/name 

und die Änderungen an einer Datei

git checkout -- /file/name 

rückgängig zu machen Wenn Sie eine Batch-Dateien in einem Ordner haben, können Sie den gesamten Ordner rückgängig machen

git checkout -- /folder/name 

Beachten Sie, dass alle diese Befehle bereits angezeigt werden, wenn Sie git status

Hier habe ich eine Dummy-Repo- und aufgeführt, die alle drei Möglichkeiten

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
#  modified: test 
# 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: test2 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  test3 
4

Von sourcetree gui Klick auf Arbeits Directoy rechten Maustaste auf die Datei (en), die Sie auf Verwerfen klicken, dann verwerfen wollen

100

Auf SourceTree für Mac, klicken Sie rechts die Dateien, die Sie (in der Dateien im Arbeits Baum Liste) verwerfen möchten, und wählen zurücksetzen.

Auf SourceTree für Windows-, klicken Sie rechts die Dateien, die Sie (in der Arbeitskopie Änderungen Liste) und wählen Verwerfen verwerfen wollen.

Auf git, würden Sie einfach tun:

git reset --hard Änderungen versioniert Dateien zu verwerfen;

git clean -xdf neue (untracked) Dateien zu löschen, ignoriert diejenigen, einschließlich (die x Option). d ist auch zu entfernen nicht verfolgte Verzeichnisse und f zu erzwingen.

+7

Sie können auch mit der rechten Maustaste auf die gesamte "Arbeitskopie" im linken Bereich klicken (oder drücken Sie Cmd + Shift + R) ;-) – Geo

+8

Erstaunlich, dass derselbe Befehl einen anderen Namen für Mac und Windows hat. Als ob Git GUI (im Vergleich zur Kommandozeile) nicht schon genug verwirrend wäre. – NSTJ

+0

Danke! Ich denke, dies sollte als die richtige Antwort gewählt werden ;-) –

2

Klicken Sie in der nicht gesicherten Datei auf die drei Punkte auf der rechten Seite. Sobald Sie darauf klicken, erscheint ein Popover-Menü, wo Sie dann Discard file.

+0

Das ist in Ordnung, wenn es nur ein paar Dateien sind, aber was passiert, wenn es viele Dateien gibt? –

Verwandte Themen