it-swarm.com.de

git macht alle nicht festgeschriebenen oder nicht gespeicherten Änderungen rückgängig

Ich versuche, alle Änderungen seit meinem letzten Commit rückgängig zu machen. Ich habe versucht, git reset --hard und git reset --hard HEAD nach dem Anzeigen dieser Beitrag . Ich antworte mit Kopf ist jetzt bei 18c3773 ... aber wenn ich auf meine lokale Quelle schaue, sind alle Akten noch dort. Was vermisse ich?

722
Antarr Byrd
  • Dadurch werden alle Dateien, die Sie möglicherweise mit git add bereitgestellt haben, deaktiviert:

    git reset
    
  • Dadurch werden alle lokalen, nicht festgeschriebenen Änderungen zurückgesetzt (sollten im Repo-Stammverzeichnis ausgeführt werden):

    git checkout .
    

    Sie können nicht festgeschriebene Änderungen auch nur für bestimmte Dateien oder Verzeichnisse rückgängig machen:

    git checkout [some_dir|file.txt]
    

    Noch eine andere Möglichkeit, alle nicht festgeschriebenen Änderungen rückgängig zu machen (länger zu schreiben, funktioniert aber in jedem Unterverzeichnis):

    git reset --hard HEAD
    
  • Dadurch werden alle lokalen nicht verfolgten Dateien entfernt, sodass nur git-verfolgte Dateien verbleiben:

    git clean -fdx
    

    WARNUNG:-x entfernt auch alle ignorierten Dateien, einschließlich der von .gitignore angegebenen! Möglicherweise möchten Sie -n für die Vorschau der zu löschenden Dateien verwenden.


Um es zusammenzufassen: Die Ausführung der folgenden Befehle entspricht im Wesentlichen der Ausführung von fresh git clone aus der Originalquelle (aber es wird nichts erneut heruntergeladen, daher ist es viel schneller):

git reset
git checkout .
git clean -fdx

Typische Verwendung hierfür sind Erstellungsskripte, bei denen Sie sicherstellen müssen, dass Ihr Baum absolut sauber ist - keine Änderungen oder lokal erstellten Objektdateien oder Erstellungsartefakte aufweist und Sie möchten, dass er sehr schnell funktioniert und nicht erneut erstellt wird. Klonen Sie jedes Mal das gesamte Repository.

1419
mvp

Wenn Sie alle nicht festgeschriebenen Änderungen "rückgängig machen" möchten, führen Sie einfach Folgendes aus:

git stash
git stash drop

Wenn Sie nicht verfolgte Dateien haben (überprüfen Sie, indem Sie git status ausführen), können Sie diese entfernen, indem Sie Folgendes ausführen:

git clean -fdx

git stash erstellt einen neuen Stash, der zu stash @ {0} wird. Wenn Sie zuerst prüfen möchten, können Sie git stash list ausführen, um eine Liste Ihrer Stashes anzuzeigen. Es wird ungefähr so ​​aussehen:

[email protected]{0}: WIP on Rails-4: 66c8407 remove forem residuals
[email protected]{1}: WIP on master: 2b8f269 Map qualifications
[email protected]{2}: WIP on master: 27a7e54 Use non-dynamic finders
[email protected]{3}: WIP on blogit: c9bd270 some changes

Jeder Stash ist nach der vorherigen Commit-Nachricht benannt.

136
Abram

es gibt auch git stash, das Ihre lokalen Änderungen "versteckt" und zu einem späteren Zeitpunkt erneut angewendet oder gelöscht werden kann, wenn dies nicht mehr erforderlich ist

mehr Infos zum Verstauen

20
keshav

Ich verwende den Quelltextbaum .... Sie können alle nicht festgeschriebenen Änderungen in zwei einfachen Schritten rückgängig machen:

1) muss nur den Status der Arbeitsbereichsdatei zurücksetzen

enter image description here 2) Wählen Sie alle Unstage-Dateien aus (Befehl + a), klicken Sie mit der rechten Maustaste und wählen Sie Entfernen

enter image description here

So einfach ist das: D

12
user1872384

Für diejenigen, die hier angekommen sind und gesucht haben, ob sie git clean -f -d rückgängig machen können, wodurch eine in Eclipse erstellte Datei gelöscht wurde,

Sie können dasselbe über die Benutzeroberfläche tun, indem Sie "Aus lokalem Verlauf wiederherstellen" für ref: Aus lokalem Verlauf wiederherstellen verwenden

7
Abdul Rahman K

Staaten, die von einem Commit zu einem neuen Commit wechseln

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

Aktion für den Staatsübergang

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

Differenz prüfen

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

Zum letzten Commit zurückkehren

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

Entspricht dem git-Klon, ohne etwas erneut herunterzuladen

git reset; git checkout .; git clean -fdx
4
Zii

Was ich tue ist

git add . (adding everything)
git stash 
git stash drop

Ein Liner: git add . && git stash && git stash drop

2
Ralph