Wie verwerfe ich nicht festgeschriebene Änderungen in SourceTree?

80

Ich bin neu in der Git-Umgebung und verwende BitBucket mit SourceTree auf dem Mac. Jetzt möchte ich nur noch die Änderungen seit dem letzten Festschreiben verwerfen. Wie soll ich das machen? Ich habe nichts wie "Änderungen verwerfen" gefunden, und das direkte Abrufen vom letzten Commit scheint nicht zu funktionieren. Lösungen, die entweder mit der GUI oder der Befehlszeile durchgeführt werden, sind gut. Danke dir.

goldfrapp04
quelle
Sie meinen, Sie möchten das letzte Commit rückgängig machen? oder lassen Sie es und überprüfen Sie das vorherige Commit zum Beispiel aus Testgründen?
Mohammad AbuShady
1
@MohammadAbuShady Ich denke, die Antwort ist keine. Seit dem letzten Commit habe ich einige Änderungen vorgenommen, die ich verwerfen möchte. Ich möchte mein letztes Commit zurück.
Goldfrapp04
Sie haben also nicht festgeschriebene Änderungen, die Sie rückgängig machen möchten?
Mohammad AbuShady
Keine der Antworten hier hat mir geholfen, den nervigen Eintrag "Nicht festgeschriebene Änderungen" oben in meinem Sourcetree zu entfernen. Und es gab zu viele nicht bereitgestellte Dateien, um sie einzeln zu verwerfen. Die Antwort hier funktionierte: stackoverflow.com/questions/14075581/…
PVS
Ich war zwischen den Kontextmenüoptionen verwirrt, als ich mit der rechten Maustaste auf ein Element in der Liste Nicht bereitgestellte Dateien klickte. Discard(Shift + Strg + R) und Remove(Strg + Entf) denke ich , Discardwerden die Änderungen wie zurückkehren git reset --hardund Removedie Datei und Bühne , die Löschung löschen.
Die rote Erbse

Antworten:

60

Ich benutze gerne

git stash

Dadurch werden alle nicht festgeschriebenen Änderungen im Vorrat gespeichert . Wenn Sie diese Änderungen später einfach verwerfen git stash drop(oder git stash popwiederherstellen) möchten .

Dies ist jedoch technisch gesehen nicht der "richtige" Weg, um Änderungen zu verwerfen (wie andere Antworten und Kommentare gezeigt haben).

SourceTree : Klicken Sie in der oberen Leiste auf das Symbol 'Stash', geben Sie den Namen ein und erstellen Sie. Dann können Sie im linken vertikalen Menü alle Verstecke "anzeigen" und im Kontextmenü löschen. In ST gibt es wahrscheinlich keine andere Möglichkeit, alle Dateien gleichzeitig zu verwerfen.

Max
quelle
7
git reset --hard HEAD
Nun,
4
@cocoanut Ich denke meine Antwort "falsch", weil dies ein Missbrauch der stashFunktion ist. Mohammeds Antwort ist der richtige Weg, um alle Änderungen zu verwerfen.
Max
Ja, und auch, weil ich nicht sehen konnte, wo die Verknüpfung ist.
Roberto
3
Ich mag diese Methode, da sie Ihnen eine letzte Chance gibt, Ihre Änderungen wiederherzustellen, wenn Sie Ihre Meinung ändern. Ich habe selten reset --hard, aber ich verwahre meine Änderungen oft, um neu anzufangen, und lasse sie später fallen, wenn ich beschließe, dass ich sie nicht brauche.
Max
Diese Methode hat keine neuen nicht versionierten Dateien gelöscht. Robertos Methode zum Zurücksetzen und Reinigen funktionierte in diesem Fall besser.
Gabriel Jensen
141

Klicken Sie unter SourceTree für Mac mit der rechten Maustaste auf die Dateien, die Sie verwerfen möchten (in der Liste Dateien in der Arbeitsbaumstruktur ), und wählen Sie Zurücksetzen .

Klicken Sie unter SourceTree für Windows mit der rechten Maustaste auf die Dateien, die Sie verwerfen möchten (in der Liste Änderungen an Arbeitskopien ), und wählen Sie Verwerfen .

Auf git würden Sie einfach tun:

git reset --hard Änderungen an versionierten Dateien zu verwerfen;

git clean -xdfum neue ( nicht verfolgte ) Dateien zu löschen , einschließlich ignorierter (die xOption). dist auch nicht verfolgte Verzeichnisse fzu entfernen und zu erzwingen.

Roberto
quelle
9
Sie können auch mit der rechten Maustaste auf die gesamte "Arbeitskopie" im linken Bereich klicken (oder Cmd + Umschalt + R drücken) ;-)
Geo
14
Erstaunlich, dass derselbe Befehl für Mac und Windows einen anderen Namen hat. Als ob die Git-GUI (im Vergleich zur Befehlszeile) nicht schon verwirrend genug wäre.
NSTJ
Vielen Dank! Ich denke, dies sollte als die richtige Antwort gewählt werden ;-)
Hernan Arber
@NSTJ: Einverstanden ... es erschüttert das Vertrauen in die Möglichkeit, Begriffen wie "Zurücksetzen" und "Verwerfen" in Bezug auf Git-Tools eine konsistente Definition zuzuweisen. Dh eine Definition, von der Sie erwarten können, dass sie weitgehend vereinbart wird.
LarsH
7

Klicken Sie in der nicht bereitgestellten Datei auf die drei Punkte auf der rechten Seite. Sobald Sie darauf klicken, wird ein Popover-Menü angezeigt, in dem Sie dann klicken können Discard file.

NYC Tech Engineer
quelle
2
Dies ist in Ordnung, wenn es sich nur um wenige Dateien handelt. Was passiert jedoch, wenn viele Dateien vorhanden sind?
Itai Spector
4

Ok, ich habe gerade bemerkt, dass meine Frage bereits im Fragentitel beantwortet wurde.

Zum Aufheben der Bühne verwenden Sie

git reset HEAD /file/name

Und um die Änderungen an einer Datei rückgängig zu machen

git checkout -- /file/name

Wenn sich mehrere Dateien in einem Ordner befinden, 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 ein Dummy-Repo erstellt und alle 3 Möglichkeiten aufgelistet

# 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
Mohammad AbuShady
quelle
4

Klicken Sie in der Sourcetree-GUI auf Working Directoy, klicken Sie mit der rechten Maustaste auf die Datei (en), die Sie verwerfen möchten, und klicken Sie dann auf Discard

giuse
quelle
1

Gehen Sie wie folgt vor:

  • Klicke auf commit
  • Wählen Sie alle aus, indem CMD+ASie auf die gewünschte Taste drückendelete or discard
  • Right click auf die ausgewählten nicht festgeschriebenen Dateien, die Sie löschen möchten
  • Wählen Sie Removeaus der Dropdown-Liste
Frostmourne
quelle
1

Ok, in Windows Sourcetree ist das einfach, unter MacOS habe ich auch eine Weile nachgesehen.

Klicken Sie auf Befehl + Umschalt + R, während im Quellbaum ein verstecktes Popup angezeigt wird, mit dem Sie einzelne Dateien ODER ALLE verwerfen können! Warum ist das versteckt? Wir werden es nie erfahren ... aber es funktioniert ! [Bildbeschreibung hier eingeben] 1

ItaiRoded
quelle