Ich versuche, meine Dateien mit bash auf github zu verschieben. Sie sind bereits dort und ich lade eine neuere Version mit neuen Zeilen und Code usw. hoch. Aber wenn ich es versuche git add
und dann git status
heißt es:
Auf Zweigstamm
nichts zu begehen, Arbeitsverzeichnis sauber
Und die Datei, die ich verwende, wurde gerade geändert.
git diff
(odergit status
) nichts anzeigt, was erklärt, warum nichts hinzuzufügen ist. Die Frage ist also wirklich: "Warum erkennt Git nicht, dass meine Datei geändert wurde?"Antworten:
Ich hatte ein Problem, bei dem ich den Git-Index für meine Datei auf "unverändert" gesetzt habe.
Sie können git anweisen, Änderungen an der Datei nicht mehr zu ignorieren:
Wenn dies nicht hilft, kann ein Zurücksetzen für andere seltsame Fälle ausreichen.
In der Praxis habe ich festgestellt, dass die zwischengespeicherte Datei entfernt und auf Funktion zurückgesetzt wurde:
Dies
git rm --cached
bedeutet, dass nur die Datei aus dem Index entfernt wird undreset
git angewiesen wird, den git-Index vom letzten Commit neu zu laden.quelle
git add -f path/to/the/file
Die Dateien werden festgeschrieben, um sie festzuschreiben.git add -f
die Datei ausprobiert, die sich in diesem Zustand "unverändert annehmen" befand, und sie hat nicht funktioniert - musste entwedergit update-index
odergit rm --cached
gefolgt von agit reset
, damit sie funktioniert.git rm --cached -r .
und danngit reset .
.git update-index --no-skip-worktree path/to/file
so habe ich mein Problem gelöstÜberprüfen Sie Ihre
.gitignore
Datei . Möglicherweise stimmen die Datei oder die Erweiterung der Datei oder der Pfad zu der Datei, mit der Sie arbeiten.gitignore
möchten, mit einem Eintrag in überein , der erklärt, warum diese Datei ignoriert wird (und nicht als geänderte Datei erkannt wird).Dies stellte sich für mich heraus, als ich ein ähnliches Problem hatte.
quelle
lib/
der git diesen Ordner ignoriert. Das ist kein Problem - zumindest wenn dieser Ordner nicht der Hauptordner Ihres Projekts ist, wie es mir passiert ist.Wie bereits besprochen, wurden die Dateien wahrscheinlich mit "unverändert annehmen" gekennzeichnet, was git grundsätzlich mitteilt, dass Sie die Dateien nicht ändern werden, sodass Änderungen nicht mit ihnen verfolgt werden müssen. Dies kann jedoch mehrere Dateien betreffen. Wenn es sich um einen großen Arbeitsbereich handelt, möchten Sie möglicherweise nicht alle Dateien einzeln überprüfen. In diesem Fall können Sie versuchen: git update-index --really-refresh
gemäß den Dokumenten:
Grundsätzlich wird git gezwungen, Änderungen aller Dateien unabhängig von den Flags "Unverändert annehmen" zu verfolgen.
quelle
git status
heißt es, dass keine Dateien geändert werden, sonderngit add .
zwei Dateien hinzugefügt werden undgit update-index --really-refresh
dass diese beiden aktualisiert werden müssen, aber anscheinend nichts bewirken. Irgendeine Idee?git ls-files -v | grep '^[[:lower:]]'
Wenn nichts hilft, sollten Sie eine Frage mit weiteren Details erstellen, damit wir Ihnen helfen können Sie.Nun, wir haben nicht genug, um diese Frage zu beantworten, also werde ich Ihnen einige Vermutungen geben:
1) Sie haben Ihre Änderungen gespeichert, um den Typ zu korrigieren:
git stash pop
2) Sie hatten Änderungen und Sie haben sie festgeschrieben. Sie sollten in der Lage sein, Ihr Festschreiben in zu sehen
git log
3) Sie hatten Änderungen, die auf die eine
git reset --hard
oder andere Weise vorgenommen wurden. Ihre Änderungen befinden sich möglicherweise im Reflog. Geben Sie ein,git reflog --all
gefolgt vom Auschecken oder Auswählen des Schiedsrichters, falls Sie ihn jemals finden.4) Sie haben dasselbe Repo mehrmals ausgecheckt und befinden sich im falschen.
quelle
git commit --amend
festlegen, welche Änderungen Ihre neuen Änderungen in Ihr letztes Festschreiben übernehmen Tun Sie das nicht, wenn Sie Ihr Commit bereits geteilt haben.Klingt verrückt, aber manchmal bist du nicht im richtigen Repo, obwohl du denkst, dass du es bist. Möglicherweise haben Sie das übergeordnete Verzeichnis verschoben, aber vergessen, die Repos in Ihrem Texteditor zu wechseln. Oder umgekehrt: Sie befinden sich im richtigen Editor im Texteditor, aber im falschen Repo in der Befehlszeile. In der ersten Situation nehmen Sie Ihre Änderungen in der richtigen Datei vor, aber es ist nicht derselbe Ordner, der in Ihrer Befehlszeile geöffnet ist, also ist es tatsächlich die falsche Datei. In der zweiten Situation haben Sie tatsächlich die richtige Datei bearbeitet, aber Ihr Befehlszeilen-Git erkennt die Änderung nicht, da Sie sich nicht im richtigen Verzeichnis in der Befehlszeile befinden.
quelle
Hatte so eine funky Sache passiert. Das Git-Plugin von Eclipse Kepler hat automatisch alle meine Projektordner als im .gitignore-Ordner ignoriert markiert.
Wenn ich
commit
auf dieTeam
Speisekarte kam, wurden sie alle wieder ignoriert. Soweit ich das beurteilen kann, lag dies daran, dass ich sie als im übergeordneten Projekt abgeleitet festgelegt hatte. Deaktivieren Sie diese alsdervied
behoben. Ich hatte das noch nie auf Indigo gesehen. Hoffe es hilft jemandem.quelle
Dies ist unter Windows beim Ändern von Dateien durch Übertragen von Unterschieden über das WinMerge-Tool geschehen. Anscheinend aktualisiert WinMerge (zumindest so, wie es auf meinem Computer konfiguriert ist) manchmal nicht die Zeitstempel der Dateien, die es ändert.
Unter Windows verwendet der Git-Status unter anderem den Zeitstempel einer Datei und Änderungen der Dateigröße, um festzustellen, ob sich eine Datei geändert hat oder nicht. Da der Zeitstempel nicht aktualisiert wurde, hatte er nur die Dateigröße. Leider war die fragliche Datei eine einfache Versionsdatei, bei der der Inhalt von 7.1.2 auf 7.2.0 geändert wurde . Mit anderen Worten blieb auch die Dateigröße unverändert. Andere Dateien, die ebenfalls von WinMerge geändert wurden und deren Zeitstempel nicht aktualisiert wurden, aber nach der Änderung eine andere Größe hatten, wurden vom Git-Status in Ordnung erkannt .
quelle
Ich hatte ein ähnliches Problem bei der Verwendung von Sublime Text-3 . Nachdem ich neue Änderungen am Code vorgenommen und ihn gespeichert hatte, lautete die Antwort beim Versuch, die Befehle git add ./status zu verwenden, "Zweig bereits auf dem neuesten Stand". Ich habe herausgefunden, dass die Datei unabhängig vom Speichern der Aktualisierungen im Texteditor tatsächlich unverändert war. Das Öffnen der Datei in einem anderen Editor und das Speichern der Änderungen hat bei mir funktioniert.
quelle
TL; DR; Sind Sie überhaupt im richtigen Repository?
Meine Geschichte ist ein bisschen lustig, aber ich dachte, es kann mit jemandem passieren, der vielleicht ein ähnliches Szenario hat, also teile es hier.
Eigentlich auf meinem Rechner hatte ich zwei separate git Repositories
repo1
undrepo2
in demselben Stammverzeichnis namens konfiguriertsource
. Diese beiden Repositorys sind im Wesentlichen die Repositorys von zwei Produkten, die ich in meinem Unternehmen ab und zu arbeite. Nun ist die Sache, dass als Standardrichtlinie die Verzeichnisstruktur des Quellcodes aller Produkte in meinem Unternehmen genau gleich ist.Ohne es zu merken, habe ich eine genau gleichnamige Datei geändert, in
repo2
der ich mich ändern sollterepo1
. Also, ich habe einfach Befehl läuftgit status
aufrepo1
und es hielt die gleiche Botschaft zu gebenfür eine halbe Stunde. Dann beobachtete mein Kollege es als unabhängiges Augenpaar und machte mich darauf aufmerksam, dass ich mich in einem falschen, aber sehr ähnlich aussehenden Repository befand. In dem Moment, als ich zu
repo1
Git wechselte, bemerkte ich die geänderten Dateien.Nicht so häufig. Aber du weißt nie!
quelle
Haben Sie das Verzeichnis unter Ihrer Shell entfernt? Dies kann passieren, wenn Sie Ihr Projekt aus einer Sicherung wiederhergestellt haben. Um dies zu beheben, einfach
cd
raus und wieder rein:quelle
Überprüfen Sie bei diesem Problem im Allgemeinen zunächst, ob Sie die Datei bearbeiten, von der Sie glauben, dass Sie sie sind! Ich hatte dieses Problem, als ich eine transpilierte JavaScript-Datei anstelle der Quelldatei bearbeitete (die transpilierte Version war nicht unter Quellcodeverwaltung).
quelle
Mein Git-Client (Gitg) hat dieses Problem für mich verursacht. Normale Befehle, die ich normalerweise ausführen würde, funktionierten nicht. Selbst das Berühren jeder Datei im Projekt hat nicht funktioniert.
Ich habe einen Weg gefunden, das Problem zu beheben, und bin mir immer noch nicht sicher, was es verursacht hat. Kopieren Sie Ihr Projektverzeichnis. Die fehlenden Dateien werden im kopierten Verzeichnis angezeigt
git status
. Das Umbenennen kann dasselbe bewirken.quelle
Ich bin auf das Problem gestoßen, aber es waren nur zwei Verzeichnisse, und mir war nicht bekannt, dass beide Verzeichnisse als Git-Submodule konfiguriert wurden. Wie das passiert ist Ich habe keine Ahnung, aber der Prozess bestand darin, einige der Anweisungen auf diesem Link zu befolgen, aber NICHT das Verzeichnis zu entfernen (wie er es am Ende tut), sondern es zu tun
git add path/to/dir
quelle
Wenn Sie eine Datei in Visual Studio bearbeiten, wird sie sofort in Git-Änderungen aufgelistet, auch wenn die Datei nicht gespeichert ist. Sie müssen die Datei also nur manuell speichern (Strg + S für die aktuell angezeigte Datei oder Strg + Umschalt + S für alle Projektdateien), und Git Bash nimmt sie auf.
quelle
.js
Datei Kommentare hinzufügte und mit Visual Studio Code arbeitete. Danke dir.Welche Art von Datei haben Sie versucht hochzuladen? Jetzt verbringe ich nur fast eine Stunde damit, meine CSS-Modifikation hochzuladen. Aber diese CSS, die aus einer Styl-Datei kompiliert wurde, wurde von Git einfach ignoriert. Als ich die Stilquelle wechselte, funktionierte alles.
Ich hoffe es hilft.
quelle
Manchmal hängt es von der Git-Version ab und wenn Sie es vergessen
git add .
.Um Ihre Änderungen im Repository zu überprüfen, verwenden Sie immer
git status
alle nicht verfolgten und geänderten Dateien. Weilgit diff
nur hinzugefügte Dateien anzeigen.quelle
Stellen Sie sicher, dass Sie keine symlinks (
ln -s source dest
) innerhalb von Git Bash für Windows erstellen .Es werden KEINE Symlinks erstellt, sondern eine DEEP-Kopie der Quelle zum Ziel
Ich habe das gleiche Verhalten wie OP auf einem MINGW64-Terminal von Git Bash für Windows (Version 2.16.2) festgestellt, um festzustellen, dass sich meine "bearbeiteten" Änderungen tatsächlich im ursprünglichen Verzeichnis befanden und meine Git-Bash-Befehle aus einer verbleibenden tiefen Kopie stammten unverändert.
quelle
Ich hatte das gleiche Problem. Es stellte sich heraus, dass ich zwei Kopien des Projekts hatte und mein Terminal sich im falschen Projektordner befand!
quelle
Es ist mir auch passiert, ich habe die oben genannten Methoden ausprobiert und nichts hat geholfen. Dann bestand die Lösung darin, die Datei über das Terminal und nicht über die GUI zu ändern. Ich weiß nicht, warum das funktioniert hat, aber es hat funktioniert. Nachdem ich die Datei über Nano vom Terminal Git bearbeitet hatte, erkannte ich sie als geändert und konnte sie hinzufügen und festschreiben.
quelle
Ich habe das gleiche Problem hier VS2015 hat die Änderungen meiner JS-Dateien nicht erkannt. Das Entfernen von Fernbedienungen aus den Repository-Einstellungen und das erneute Hinzufügen des Remote-URL-Pfads haben mein Problem behoben.
quelle
Ich hatte ein ähnliches Problem, als ich eine Patch-Datei auf dem Server mit dem vi-Editor erstellte. Es scheint, dass das Problem mit dem Abstand war. Als ich den Patch von lokal gepusht habe, war die Bereitstellung korrekt.
quelle
Ich hatte dieses Problem. Meins funktionierte nicht, weil ich meine Dateien im Ordner .git in meinem Projekt ablegte.
quelle
In meinem Fall habe ich
git reset --hard
gelöschte Dateien erstellt und einige leere Ordner hinterlassen. Nachdem ich den Inhalt überprüft hatte, bemerkte ich, dass die Verzeichnisse leer waren.Git ignoriert jedoch leere Ordner. (Korrektur, git ignoriert alle Verzeichnisse, da es Inhalte verfolgt, leere Ordner sind keine Inhalte.)
quelle
versuche es
git add *
dann zu benutzengit commit
quelle