6291 Stimmen

Wie verwerfe ich nicht bereitgestellte Änderungen in Git?

Wie verwerfe ich Änderungen in meiner Arbeitskopie, die nicht im Index enthalten sind?

0 Stimmen

16 Stimmen

git-clean entfernt nur die nicht verfolgten Dateien aus dem Arbeitsbaum git-scm.com/docs/git-clean

37 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 .

5voto

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

1voto

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X