Nachdem Sie Folgendes über die Befehlszeile gesehen haben:
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
Ich versuche, meine Änderungen durch Eingabe des folgenden Befehls zu verwerfen:
git checkout -- index.htm
Aber wenn ich den Git-Status erneut starte, sieht es genauso aus. Die Kasse scheint nicht zu funktionieren. Mache ich etwas falsch? Ich verwende GIT 1.6.1.2 unter Windows / Cygwin.
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
git checkout HEAD -- index.htm
Auschecken aus dem zuletzt festgeschriebenen Status anstelle des Auscheckens aus dem Index?git checkout HEAD -- index.htm
hat für mich gearbeitet!Antworten:
Das hat mich schon eine Weile gestört, fast jedes Repo, das ich auscheckte, hatte Änderungen, die ich nicht verwerfen konnte. Lange Rede, kurzer Sinn, ich habe alles versucht, nichts hat funktioniert. Folgendes habe ich getan, um die Dinge wieder normal zu machen (auf einem Mac):
quelle
Hier ist meine Erfahrung, setzen Sie folgende Variablen in
.git/config
:dann laufen
$ git checkout HEAD .
, und es funktioniert. aber$ git checkout -- .
nicht seltsam!* Git Version 1.9.3
quelle
Welche Änderungen
git diff
werden in der Datei angezeigt? Unter Windows habe ich Probleme mit Zeilenenden gesehen, die solche Probleme verursachen. Überprüfen Sie in diesem Fall, welche Einstellungen Sie fürgit config core.autocrlf
und habengit config core.safecrlf
. Hier finden Sie eine Dokumentation zu diesen Einstellungen .Ich würde sagen, wenn Sie
git svn
für die Integration mit Subversion verwenden, stellen Sie sicher, dass deaktiviertautocrlf
ist. Soweit ich weiß, ist es in dieser Konfiguration nur defekt und die meisten Tools glauben, dass Dateien geändert wurden, wenn Siecheckout
Änderungen vorgenommen haben.Wenn Sie dort ein Problem sehen
git checkout
und danngit status
anzeigen, dass die Datei noch geändert wurde undgit diff
die Datei in jeder Zeile der Datei geändert wird, ist dies das Problem, das Sie sehen.quelle
Ich denke du musst bestehen
-f
Aus der Manpage (
man git-checkout
, GIT-CHECKOUT (1)):Verwerfen Sie beispielsweise Änderungen am aktuellen Zweig und wechseln Sie zu einem anderen Zweig:
quelle
-f
zur Kasse gehen - <Dateiname> wie ingit checkout -f -- filename
-f
git checkout -f master
warf "Bereits auf 'Master'", aber die Änderungen waren weg.Es kann sich um Zeilenenden handeln, wie aus @ 1800-Informationen hervorgeht, aber eine andere Möglichkeit besteht darin, dass der Unterschied (der verhindert, dass Sie diese Dateien mit einem Checkout-Befehl zurücksetzen) im Dateimodus liegt. Das ist mir passiert. Auf meiner Version von git können Sie dies mithilfe von entdecken
Und es zeigt Ihnen Änderungen im Dateimodus. Sie können sie jedoch auch mit der Option -f beim Auschecken nicht zurücksetzen. Verwenden Sie dazu entweder
oder ändern Sie Ihre git .config in Ihrem Texteditor durch Hinzufügen
Nachdem Sie dies getan haben, können Sie verwenden
und die Datei sollte verschwinden.
(Ich habe all dies aus den Antworten auf Wie kann ich Änderungen am Git-Ignoriermodus (chmod) vornehmen und die Dateiberechtigungen nur in Git aktualisieren ? )
quelle
Sind Sie unter OSX oder Windows? In diesem Fall liegt das Problem wahrscheinlich darin, dass zwei Dateien mit demselben Namen und unterschiedlicher Groß- und Kleinschreibung vorhanden sind. z.B. index.htm und Index.htm
Windows und standardmäßig OSX verwenden ein Dateisystem, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird. Dies steht in Konflikt mit dem Git, bei dem die Groß- und Kleinschreibung beachtet wird.
quelle
Ich hatte dieses Problem und nachdem ich all das ausprobiert hatte, funktionierte nichts.
Was für mich funktioniert hat, war, das Verzeichnis zu löschen, in dem sich die Datei befand,
git status
und dann sicherzustellen, dass alle Dateien in diesem Verzeichnis jetzt als gelöscht markiert sind. Danach habe ich es einfach gemachtgit checkout -f
und alles war wieder normal.quelle
Ich habe an einem
libGDX
Projekt gearbeitetAndroid Studio
und wollte alle Änderungen verwerfen, die ich vorgenommen habe, und nichts hat für mich funktioniert. Die Lösung, die ich gefunden habe, bestand darin, alle Änderungen in einen neuen Zweig zu übernehmenund dann können Sie den
TRASH
Zweig löschen, wenn Sie möchten.quelle
Ich hatte das gleiche Problem, nichts aus den obigen Kommentaren hat funktioniert. Es stellte sich heraus, dass mein Dateisystem nicht zwischen Groß- und Kleinschreibung unterscheidet (OSX-Standard, aber Windows verhält sich wahrscheinlich gleich) und eine Datei mit Groß- und Kleinbuchstaben im selben Verzeichnis mit unterschiedlichem Inhalt vorhanden war. Da auf meinem Computer beide Namen auf dieselbe Datei zeigten, zeigte der Git-Status immer eine Änderung, egal was ich tat. So beheben Sie das Problem:
Ich musste eine der Dateien von einem anderen Computer entfernen und zum Repo verschieben
Löschen Sie die gesamte lokale Version vollständig
Git-Klon von Grund auf neu
quelle
Ich hatte ein ähnliches Problem, bei dem ich keine Dateien verwerfen konnte, die entweder nicht vorhanden sind oder geändert wurden. Ich verwende Visual Studio bei der Arbeit und habe festgestellt, dass dies passiert, wenn Zweige gewechselt werden, während die App ausgeführt wird.
git checkout
und der Versuch, wegzuwerfen, half nicht. Es würde nicht funktionieren oder es würde mir nur sagen, dass ich keine Erlaubnis habe.Lösung, die funktioniert hat:
Ein Neustart ist ein Schmerz, aber dies funktionierte schneller als das Ausprobieren von 100 Dingen.
quelle
Es gibt eine einfache Lösung. Wenn dies passiert (normalerweise durch unerwartetes Herunterfahren von Windows oder Speicherauszug) und Sie Ihre Änderungen nicht verwerfen und sogar zwischen Zweigen wechseln können (Git sagt, Sie haben nicht genügend Berechtigungen); in der
Windows
Umgebungshow all hidden files and folders
aus Ordneroptionen. Gehen Sie in Ihr GIT-Verzeichnis (sollte mit beginnen.git
) und löschen Sie die"index.lock"
Datei. Dann sollte Git Sie tun lassen, was Sie wollen.quelle
Am Ende machte ich ein
git stash
gefolgt von einemgit stash clean
, um einige loszuwerden. In .git / oder ~ / .git wurden keine automatischen cr / lf-Konfigurationen angezeigt.quelle
In meinem Fall konnte ich Änderungen an einem Verzeichnis nicht verwerfen. zB wenn ich einen Git Diff laufen ließ, würde ich das sehen:
-Subproject commit fdcccccccccccccccccccccccccccccccccccccc +Subproject commit f1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Also habe ich dieses Verzeichnis aufgerufen und dort einen Git-Status ausgeführt. Es war in einem KOPF losgelösten Zustand. Und dann bin ich einfach reingelaufen
git checkout master
. Das hat die Dinge für mich richtig gemacht. Dies ist jedoch nicht hilfreich für das genaue Szenario, das hier gefragt wird.quelle
Dies ist eine alte Frage, die mir aber immer noch relevant war. Ich fand meine Antwort erst, als ich mich im Büro erkundigte, und stellte fest, dass das Problem bei Submodulen lag. Wenn sie aktualisiert werden und Ihr eigenes Repository diese Änderungen nicht widerspiegelt, werden Unterschiede angezeigt. Das Zurücksetzen des Kopfes hilft nicht. Wenn dies der Fall ist, führen Sie Folgendes aus:
Das sollte helfen, Dinge zu reparieren (in diesem speziellen Fall)
quelle
Ich hatte ein Berechtigungsproblem in Windows und musste
icacls containingFolder /reset /t /l /c
den Ordner doppelklicken, um meine Berechtigungen zurückzugewinnen.quelle
Ich hatte .gitattributes mit folgendem Inhalt:
* text=auto eol=lf
Um das Problem zu beheben, bearbeiten Sie
.gitattributes
diese Zeile, um die Zeilenenden zu entfernen. Danngit reset --hard HEAD
die Dateien und die.gitattributes
Datei zurückgesetzt.quelle
Für mich war dieses Problem eine Kombination aus dem Herunterladen eines Git-LFS-Images, das über Netlify CMS hochgeladen und von ihrem Netlify Large Media-Handler anders bereitgestellt wurde.
Meine Lösung bestand darin, diese Zeilen
~/.gitconfig
so zu kommentieren / zu entfernen , dass sie wie unten aussehen, und sie danngit status
erneut zu überprüfen .ODER Sie können wahrscheinlich einen
.gitconfig
lokaleren Filter über a im Repo-Stammverzeichnis hinzufügen und die Filterregeln für lfs dort irgendwie überschreiben.Hoffe das hilft einem Kerl raus.
quelle
Ich hatte auch ein ähnliches Problem und die folgenden Schritte haben mir geholfen:
Hoffe, es hilft auch anderen Menschen.
quelle