Kann keine neuen Dateien sehen, die meinem Git-Arbeitsverzeichnis hinzugefügt wurden

Lesezeit: 7 Minuten

Git-Version 1.7.4.1

Ich benutze Git auf Ubuntu.

Ich habe einige Dateien aus einem anderen Verzeichnis in mein Git-Arbeitsverzeichnis kopiert. Normalerweise würde unter erscheinen Untracked files. Sie erscheinen jedoch nicht. Daher kann ich sie nicht hinzufügen.

Wenn ich a mache git status Die neuen Dateien werden nicht angezeigt.

Ich habe versucht, sie hinzuzufügen, indem ich tue git add source.c dann probiert git status. Die Datei wurde nicht angezeigt.

Also öffnete ich die Datei und tat a save as als gleichnamig. git status konnte die Datei immer noch nicht sehen.

Ich habe eine gemacht git ls-files und die neuen Dateien werden ok angezeigt.

Ich habe die Dateiberechtigungen überprüft und sie sind mit allen aktuellen Dateien in meinem Git-Verzeichnis identisch.

Ich hatte dieses Problem noch nie.

Vielen Dank für Anregungen,

  • Was sind die Inhalte Ihres Git ignorieren? und welche Dateien werden nicht angezeigt?

    – Drawag

    8. Juli 2011 um 4:15 Uhr

  • Hast du eine Ignore-Datei im Repo?

    – Sergej Mirjanow

    8. Juli 2011 um 4:15 Uhr

  • Sie sollten Ihr Git-Ignorieren überprüfen und möglicherweise auf die neueste Version (1.7.6) aktualisieren.

    – Shelhamer

    8. Juli 2011 um 4:18 Uhr

  • Es gibt nichts in der .gitignore. Die Dateien sind *.c-Quelldateien. Und ich habe viele von ihnen, an denen ich an dieser Show arbeite, ok.

    – Ameise2009

    8. Juli 2011 um 4:51 Uhr

  • Können Sie den vollständigen Baum Ihres Repos posten: cd your_repo && tree -a ? (wenn Sie keinen Baum installiert haben: sudo apt-get install tree)

    – Simon

    15. Juli 2011 um 16:45 Uhr

Wenn git ls-files zeigt an source.c, dann muss es schon im Index stehen. Dies bedeutet, dass es bereits verfolgt und möglicherweise bereits festgeschrieben wurde. Wenn source.c taucht nicht auf git status überhaupt, dann muss die Datei festgeschrieben worden sein.

Versuchen Sie, die Datei zu ändern, um zu sehen, ob sie als geändert in angezeigt wird git status. Um sich wirklich davon zu überzeugen, dass die Datei eingecheckt ist, führen Sie aus git cat-file -p HEAD:source.c um den Inhalt der eingecheckten Datei anzuzeigen (siehe git help revisions zur Dokumentation über die HEAD:source.c Syntax).

Darüber hinaus können eine oder mehrere der folgenden Aussagen zutreffen:

  • Die Datei wurde geändert, aber im Index ist das Bit „Unverändert annehmen“ gesetzt. Schauen Sie sich die Ausgabe von an git ls-files -v source.c. Wenn die erste Spalte ein Kleinbuchstabe ist, dann wird das ‘Unverändert annehmen’-Bit gesetzt. Dadurch wird verhindert, dass Änderungen in angezeigt werden git status. Sie können das ‘Unverändert annehmen’-Bit durch Ausführen ausschalten git update-index --no-assume-unchanged source.c.
  • Die Datei wurde geändert, aber im Index ist das ‘skip-worktree’-Bit gesetzt. Wenn die erste Spalte der Ausgabe von git ls-files -v source.c ist s oder S dann wird das ‘skip-worktree’-Bit gesetzt. Sie können das ‘Skip-Worktree’-Bit durch Ausführen ausschalten git update-index --no-skip-worktree source.c.
  • Ihr Index ist beschädigt. Versuchen Sie es mit Löschen .git/index (Git wird es nach Bedarf neu erstellen).
  • Dateisystemprobleme verhindern stat() davon ab, richtig zu arbeiten. Versuchen Sie es mit Laufen git update-index --really-refresh. Wenn sich Ihr Arbeitsverzeichnis auf einem Netzlaufwerk (NFS, sshfs usw.) befindet, versuchen Sie, Ihr Repository auf ein lokales Laufwerk zu verschieben.

  • Ich habe das gleiche Problem. Die ersten beiden Punkte trafen auf mich nicht zu, da die erste Spalte angezeigt wurde H. Ich löschte .git/index; git status zeigt jetzt nachverfolgte Dateien an, aber sie werden alle als gelöscht angezeigt, obwohl alle Dateien vorhanden sind. Ich habe es versucht git update-index --really-refresh umsonst.

    – Will Sewell

    5. März 2013 um 23:37 Uhr

  • ich benutzte git resetund nun git status geht zurück, um meine nachverfolgten Dateien nicht anzuzeigen – das ursprüngliche Problem.

    – Will Sewell

    5. März 2013 um 23:50 Uhr

  • @Fraktal: Wenn git status zeigt die Dateien nicht, aber git ls-files -v zeigt an H, dann wurde die Datei festgeschrieben und seit dem Festschreiben nicht geändert. Das ist normal — git status zeigt nur Abweichungen vom Normalzustand (nicht nachverfolgte Dateien, Dateien, die seit dem Bereitstellen/Festschreiben geändert wurden, Dateien, die bereitgestellt, aber noch nicht festgeschrieben wurden).

    – Richard Hansen

    6. März 2013 um 17:01 Uhr

  • @RichardHansen Ich habe ein ähnliches Problem, es zeigt H und wenn ich die Datei jetzt ändere, nachdem ich Änderungen übernommen habe, wird sie nicht im Status angezeigt. Irgendeine Idee warum?

    – blganesh101

    24. April 2014 um 15:24 Uhr

  • @blganesh101: Vielleicht möchten Sie eine neue Frage einreichen, da ich viele Details benötigen würde, z. B.: Was ist die Ausgabe von git status bevor Sie die Datei ändern? Was ist die Ausgabe von git ls-files -v <filename> nachdem Sie die Datei geändert haben? Welche Git-Version verwendest du? Welches Betriebssystem? Welches Dateisystem? Löscht .git/index etwas ändern? Tut git update-index --really-refresh <filename> etwas ändern?

    – Richard Hansen

    24. April 2014 um 18:27 Uhr

Es ist schwer, anhand der gegebenen Informationen zu sagen, was falsch ist, aber als Problemumgehung können Sie es versuchen git add -f filename.c. Dadurch wird die Datei hinzugefügt, auch wenn sie sonst ignoriert würde.

  • Dies ist die richtige Lösung; Keine Ahnung warum das nicht akzeptiert wird.

    – Graviton

    31. Oktober 2019 um 7:26 Uhr

  • Einverstanden. Der darüber hat wahrscheinlich versucht, auf den Grund zu kommen, aber das ist nur schnell und schmutzig und funktioniert

    – Chen Lizi

    9. März um 22:47 Uhr

Dies ist wirklich ein Blick ins Blaue, aber ich hatte gelegentlich ähnliche Probleme und es war eines von diesen:

  • Sie haben eine Regel in .gitignore, die die Dateien ignoriert
  • Sie haben ein .git-Verzeichnis in einem der Verzeichnisse, die Sie kopiert haben

  • Es gibt nichts in der .gitignore. Die Dateien sind *.c-Quelldateien. Und ich habe viele von ihnen, an denen ich an dieser Show arbeite, ok. Ich habe nur die Dateien kopiert und sonst nichts. Vielen Dank.

    – Ameise2009

    8. Juli 2011 um 4:52 Uhr

  • Beachten Sie, dass .git/info/exclude und die Datei, auf die verwiesen wird core.excludesfile config-Variable kann auch Ignorieren-Regeln enthalten. Ich glaube jedoch, dass Git beim Ausführen eine freundliche Meldung “Ihre Datei wurde nicht hinzugefügt, weil sie ignoriert wurde” ausgibt git add wenn es ein Ignore-Problem ist, was bedeutet, dass es wahrscheinlich kein Ignore-Problem ist.

    – Richard Hansen

    15. Juli 2011 um 17:39 Uhr

  • +1 die .gitignore Regel hat mich gestolpert. Ich habe eine Datei in das Build-Verzeichnis kopiert, sodass sie beim Erstellen korrekt funktionierte, aber nirgendwo im Status angezeigt wurde.

    –Patrick M

    22. August 2014 um 21:28 Uhr

  • Danke, das war nützlich!

    – bmustata

    27. August 2015 um 7:06 Uhr

  • Es stellte sich heraus .gitignore für mich auch. Musst du also updaten .gitignore der Branche, in der es nicht ignoriert wird? So habe ich es jetzt gelöst.

    – aashah7

    12. Juni 2017 um 20:51 Uhr

Benutzer-Avatar
Vinay Vemula

Ich habe ein Paket mit der Endung image.gen erstellt, das ein entsprechendes Verzeichnis mit der Endung image/gen hatte. Und es gab einen .gitignore-Eintrag, der spezifisch für Android gen/ war.

Dies führte dazu, dass die Datei nicht zu Git hinzugefügt wurde/ im Git-Status angezeigt wurde.

Überprüfen Sie unten, es hat mir geholfen, das Problem zu lösen.


Verwenden git check-ignore Befehl zum Debuggen Ihrer Gitignore-Datei (Dateien ausschließen).

Zum Beispiel:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

Die obige Ausgabe enthält Details zum übereinstimmenden Muster (falls vorhanden) für jeden angegebenen Pfadnamen (einschließlich Zeile).

Vielleicht wird also nicht Ihre Dateiendung ignoriert, sondern das ganze Verzeichnis.

Das zurückgegebene Format ist:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

Oder verwenden Sie den folgenden Befehl, um Ihre zu drucken .gitignore im Benutzer- und Repo-Ordner:

cat ~/.gitignore $(git rev-parse --show-toplevel)/.gitignore $(git rev-parse --show-toplevel)/.git/info/exclude

Alternativ verwenden git add -f was das Hinzufügen ansonsten ignorierter Dateien ermöglicht.

Sehen: man gitignore, man git-check-ignore für mehr Details.

https://stackoverflow.com/a/28918909/4082503

Es wird höchstwahrscheinlich von Ihrem ignoriert .gitignore Datei.

Anruf git status --ignored und prüfen Sie, ob Ihre Datei angezeigt wird.

Benutzer-Avatar
Mike MB

Es könnte sein, dass die Anwendung eines Drittanbieters Ihr “gitignore_global.txt” Datei (~/.gitignore_global unter Linux / OS X). Es ist mir passiert. Ich habe “Source Tree” installiert und bemerke danach, dass Git keine neuen Dateien verfolgt. Es wurde festgestellt, dass „Quellbaum“ die Datei „gitignore_global.txt“ geändert und ihr mehrere Erweiterungen hinzugefügt hat, um sie nicht zu überwachen. Versuchen Sie, diese Datei zu finden und sehen Sie, ob es Dateierweiterungen gibt, die nicht vorhanden sein sollten

Benutzer-Avatar
Diogo

Ich hatte das gleiche Problem. Git hat keine neuen Dateien angezeigt, die meinem Projekt hinzugefügt wurden.

Meiner wurde durch Folgendes verursacht: Irgendwie wurde der Hauptordner meines Projekts zur „Repository-spezifischen Ignorierliste“ (so heißt es in SourceTree) hinzugefügt. Dies ist die „.gitignore“-Datei im Stammverzeichnis des Hauptordners meines Projekts.

Es funktionierte, nachdem ich den Ordnernamen in der Datei „.gitignore“ gelöscht hatte.

1301030cookie-checkKann keine neuen Dateien sehen, die meinem Git-Arbeitsverzeichnis hinzugefügt wurden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy