Wie verwerfe ich Änderungen in meiner Arbeitskopie, die nicht im Index enthalten sind?
Antworten
Zu viele Anzeigen?
Malcolm Boekhoff
Punkte
912
Keine der Lösungen funktioniert, wenn Sie nur die Berechtigungen einer Datei (dies gilt für DOS/Windoze)
Mon 23/11/2015-15:16:34.80 C:\\...\\work\\checkout\\slf4j+> git status
On branch SLF4J\_1.5.3
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: .gitignore
modified: LICENSE.txt
modified: TODO.txt
modified: codeStyle.xml
modified: pom.xml
modified: version.pl
no changes added to commit (use "git add" and/or "git commit -a")
Mon 23/11/2015-15:16:37.87 C:\\...\\work\\checkout\\slf4j+> git diff
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/LICENSE.txt b/LICENSE.txt
old mode 100644
new mode 100755
diff --git a/TODO.txt b/TODO.txt
old mode 100644
new mode 100755
diff --git a/codeStyle.xml b/codeStyle.xml
old mode 100644
new mode 100755
diff --git a/pom.xml b/pom.xml
old mode 100644
new mode 100755
diff --git a/version.pl b/version.pl
old mode 100644
new mode 100755
Mon 23/11/2015-15:16:45.22 C:\\...\\work\\checkout\\slf4j+> git reset --hard HEAD
HEAD is now at 8fa8488 12133-CHIXMISSINGMESSAGES MALCOLMBOEKHOFF 20141223124940 Added .gitignore
Mon 23/11/2015-15:16:47.42 C:\\...\\work\\checkout\\slf4j+> git clean -f
Mon 23/11/2015-15:16:53.49 C:\\...\\work\\checkout\\slf4j+> git stash save -u
Saved working directory and index state WIP on SLF4J\_1.5.3: 8fa8488 12133-CHIXMISSINGMESSAGES MALCOLMBOEKHOFF 20141223124940 Added .gitignore
HEAD is now at 8fa8488 12133-CHIXMISSINGMESSAGES MALCOLMBOEKHOFF 20141223124940 Added .gitignore
Mon 23/11/2015-15:17:00.40 C:\\...\\work\\checkout\\slf4j+> git stash drop
Dropped refs/stash@{0} (cb4966e9b1e9c9d8daa79ab94edc0c1442a294dd)
Mon 23/11/2015-15:17:06.75 C:\\...\\work\\checkout\\slf4j+> git stash drop
Dropped refs/stash@{0} (e6c49c470f433ce344e305c5b778e810625d0529)
Mon 23/11/2015-15:17:08.90 C:\\...\\work\\checkout\\slf4j+> git stash drop
No stash found.
Mon 23/11/2015-15:17:15.21 C:\\...\\work\\checkout\\slf4j+> git checkout -- .
Mon 23/11/2015-15:22:00.68 C:\\...\\work\\checkout\\slf4j+> git checkout -f -- .
Mon 23/11/2015-15:22:04.53 C:\\...\\work\\checkout\\slf4j+> git status
On branch SLF4J\_1.5.3
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: .gitignore
modified: LICENSE.txt
modified: TODO.txt
modified: codeStyle.xml
modified: pom.xml
modified: version.pl
no changes added to commit (use "git add" and/or "git commit -a")
Mon 23/11/2015-15:22:13.06 C:\\...\\work\\checkout\\slf4j+> git diff
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/LICENSE.txt b/LICENSE.txt
old mode 100644
new mode 100755
diff --git a/TODO.txt b/TODO.txt
old mode 100644
new mode 100755
diff --git a/codeStyle.xml b/codeStyle.xml
old mode 100644
new mode 100755
diff --git a/pom.xml b/pom.xml
old mode 100644
new mode 100755
diff --git a/version.pl b/version.pl
old mode 100644
new mode 100755
Die einzige Möglichkeit, dies zu beheben, besteht darin, die Berechtigungen für die geänderten Dateien manuell zurückzusetzen:
Mon 23/11/2015-15:25:43.79 C:\\...\\work\\checkout\\slf4j+> git status -s | egrep "^ M" | cut -c4- | for /f "usebackq tokens=\* delims=" %A in (\`more\`) do chmod 644 %~A
Mon 23/11/2015-15:25:55.37 C:\\...\\work\\checkout\\slf4j+> git status
On branch SLF4J\_1.5.3
nothing to commit, working directory clean
Mon 23/11/2015-15:25:59.28 C:\\...\\work\\checkout\\slf4j+>
Mon 23/11/2015-15:26:31.12 C:\\...\\work\\checkout\\slf4j+> git diff
Xaree Lee
Punkte
2804
Verwenden Sie einfach:
git stash -k -u
Damit wird die nicht abgestufte Änderungen y nicht verfolgte Dateien (neue Dateien) und Staged Files aufbewahren.
Es ist besser als reset
/ checkout
/ clean
weil Sie sie später vielleicht wiederhaben wollen (durch git stash pop
). Es ist besser, sie im Vorrat zu behalten, als sie wegzuwerfen.
- See previous answers
- Weitere Antworten anzeigen
0 Stimmen
Siehe auch stackoverflow.com/questions/22620393/
16 Stimmen
git-clean
entfernt nur die nicht verfolgten Dateien aus dem Arbeitsbaum git-scm.com/docs/git-clean37 Stimmen
Um den obigen Kommentar von Asenar zu verdeutlichen,
git-clean -df
kann gefährlich sein. Es löscht lokale, nicht verfolgte Dateien (z. B. solche, die durch eine .gitignore-Datei abgedeckt sind). Lesen Sie die folgenden Hinweise sorgfältig durch und erwägen Sie stattdessen git checkout .26 Stimmen
'git clean -df ' Seien Sie gewarnt! Ich habe das ausprobiert und wichtige Ordner verloren, die nicht wiederhergestellt werden können... Autsch!
73 Stimmen
Unter
git status
macht einen Vorschlag, wie man das machen kann!git checkout -- .
0 Stimmen
Git gui hat eine Funktion, mit der Änderungen sicher rückgängig gemacht werden können. .gitignore wird von diesem Programm beachtet, während git-clean es überhaupt nicht verwendet.
0 Stimmen
@Readonly Ich denke, die Frage sollte lauten: "Wie verwerfe ich nicht bereitgestellte Änderungen im Arbeitsbaum?
git reset HEAD file1
das überschreibtfile1
vom letzten Commit in der Commit-Historie zum Staging-Bereich.28 Stimmen
@Paulo: ab Juli 2019,
git status
gibt die Anregung:git restore
.git restore
ist ein neuer Befehl genau für diesen Zweck. Siehe mein Update 2019 .2 Stimmen
Ich denke, dass entweder die Frage oder der Titel geändert werden sollte. Der Titel stimmt nicht mit der gestellten Frage überein, und es ist nicht klar, ob die Antworten beides abdecken.
0 Stimmen
Wahrscheinlich ist es nicht das, was Sie suchen, aber wenn Sie die GitHub Desktop App verwenden, gibt es natürlich einen Menüpunkt, um dies zu tun. Zweig -> Alle Änderungen verwerfen