Git - Werden keine Dateien hinzugefügt?

80

Ich habe Probleme, bei denen ich meinem Repository keine Dateien hinzufügen kann.

Ich verwende GIT unter Windows in Aptana Studio für einige Ruby-Entwicklungen.

Ich habe es geschafft, ein paar Dateien auf GitHub zu übertragen, aber danach funktioniert alles nicht mehr. Ich habe zum Beispiel einen neuen Unterordner in meinem Hauptverzeichnis mit 2 Ruby-Dateien. Wenn ich "git add." Und dann "git status" aufrufe und immer wieder "Working Directory Clean" steht und nichts festzuschreiben hat.

Ich habe versucht "git add folder / myfile.rb" und immer noch nichts.

Hat jemand eine Idee, was ich versuchen kann?

Martin Blore
quelle
2
Kein Scherz, aber versuchen Sie einen Neustart der Maschine
Manojlds
Es war ein dummer Fehler auf meiner Seite, ich benutze Tortoise Git und es gibt ein Kontrollkästchen, wenn Sie Änderungen vornehmen. Es wurde auf meiner Seite deaktiviert und ich habe nur einige neue Dateien lokal, also seien Sie vorsichtig damit!
BotanMan
1
Ich war in einem Unterverzeichnis des Projekts smh
Jacksonkr
@Jacksonkr, diese Lösung wurde bereits durch die Antwort von Gaoagong unten berichtet.
Lorenz

Antworten:

143

Ich befand mich in einer ähnlichen Situation wie auf dem Plakat:

Wenn ich "git add." Und dann "git status" aufrufe und immer wieder "Working Directory Clean" steht und nichts festzuschreiben hat.

Aber ich hatte eine andere Lösung als hier. Da ich zuerst dazu gekommen bin, hoffe ich, anderen etwas Zeit zu sparen.

Aus den obigen Antworten und dem, was ich an anderer Stelle gesehen habe, sind die üblichen Lösungen für dieses Problem:

  • Stellen Sie sicher, dass tatsächlich Änderungen an der betreffenden Datei gespeichert sind
  • Stellen Sie sicher, dass die Datei nicht Ihren Ausschlussregeln entspricht .gitignore und entspricht.git/info/exclude
  • Stellen Sie sicher, dass Sie nicht versuchen, einen leeren Ordner hinzuzufügen. Git wird diese nicht verfolgen. Die Standardlösung besteht darin, eine leere Datei .gitkeepals Platzhalter zu platzieren, damit git den Ordner verfolgt.

In meinem Fall hatte ich ursprünglich versucht, ein Git-Repo um ein vorhandenes Repo zu erstellen (ohne zu wissen, dass es dort war). Ich hatte den .gitOrdner vor einiger Zeit aus diesem Sub-Repo entfernt , aber ich wusste nicht, dass es zu spät war, und Git verfolgte ihn bereits als Submodul . Sie können mehr darüber , wie diese verhalten sich lesen und wie sie zu entfernen , hier , aber

  • Die Lösung für mich war einfach zu rennen git rm --cached path_to_submodule.
zrisher
quelle
29
Lebensretter! Ich musste einfach tippen git rm --cached name_of_former_submoduleund es bekam den Pfad automatisch.
Leymannx
8
Was ist Submodul
Muhammad Umer
Woher weiß ich, ob das mein Problem ist? Ich weiß nicht, wie ich das erkennen soll
PlayHardGoPro
1
@MuhammadUmer Auf der Submodul-Seite der offiziellen Git-Readme- Datei wird näher erläutert, um was es sich handelt.
Zrisher
29

So ergänzen Sie die möglichen Lösungen für andere Benutzer:

Stellen Sie sicher, dass Sie die Groß- und Kleinschreibung des Ordnernamens in Windows nicht geändert haben:

Ich hatte ein ähnliches Problem, bei dem ein Ordner aufgerufen wurde Setup von Git gesteuert und auf GitHub gehostet wurde. Die gesamte Entwicklung wurde auf einem Windows-Computer durchgeführt.

Irgendwann habe ich den Ordner in setup(Kleinbuchstabe S) geändert . Von diesem Zeitpunkt an, als ich neue Dateien zum Setup-Ordner hinzufügte, wurden sie im setupOrdner und nicht im SetupOrdner gespeichert , aber ich denke, weil ich auf einem Windows-Computer die vorhandenen entwickelteSetup Ordner in git / github nicht in geändert setup.

Das Ergebnis war, dass ich nicht alle Dateien in der Datei sehen konnte setup im GitHub sehen konnte. Ich vermute, wenn ich das Projekt auf einem * nix-Computer geklont hätte, hätte ich zwei Ordner gesehen, Setupund setup.

Stellen Sie also sicher, dass Sie die Groß- und Kleinschreibung des enthaltenen Ordners auf einem Windows-Computer nicht geändert haben. Wenn ja, würde ich Folgendes vorschlagen:

  • Umbenennen des Ordners in so etwas wie setup-temp
  • git add -A
  • git commit -m "Whatever"
  • Benennen Sie den Ordner wieder nach Ihren Wünschen um
  • git add -A
  • git commit -m "Whatever"
antfx
quelle
7
Dies passierte mir auch mit einem Dateinamen. Mit git mv -f newFileCase wird oldFileCase das Repository korrigieren
Brian DiCasa
Ich hatte ein Fallproblem unter osx, obwohl es leider ein * nux-Dateisystem ist, wird es im Allgemeinen so eingestellt, dass die Groß- und Kleinschreibung nicht berücksichtigt wird, was zu Problemen mit * nux-Tools wie git führen kann.
Pellet
Danke, du hast meinen Tag gerettet
Zhenya
Wenn Sie ausstehende Änderungen in Dateien mit "demselben Namen", aber mit einem anderen Fall haben, kann dies auch das gleiche Problem verursachen
Mauricio Gracia Gutierrez
Wie kann man die alte Datei herausfinden, die Git erwartet?
Diemo
24

Wenn die Datei von ausgeschlossen ist .gitignoreund Sie sie trotzdem hinzufügen möchten, können Sie sie erzwingen mit:

git add -f path/to/file.ext
Mobiusloopy
quelle
Vielen Dank! Das hat mir wirklich geholfen. Aus irgendeinem Grund wurde meine Datei ausgeschlossen (war nicht .gitignoresicher, warum!), Und dies behebt mein Problem!
Benmaq
13

Seltsam, aber ich habe die ganze Nacht mit Git gekämpft, um eine Datei hinzuzufügen. Es stellte sich heraus, dass es bereits hinzugefügt wurde. Git hat meine Änderungen nicht übernommen, da die Änderungen nicht gespeichert wurden, da auf die Datei von meinem Konto nicht zugegriffen werden konnte und meine IDE dies nicht über SSH meldete.

Kurz gesagt, stellen Sie sicher, dass Sie es noch nicht zum Repository hinzugefügt haben.

Brad
quelle
1
gitWenn Sie darüber nachdenken, könnte eine Nachricht hinzugefügt werden, wenn sich einer der angegebenen Pfade vollständig bereits im Repository befindet. Dies hätte mindestens 13 Personen einige Minuten gespart.
jjmontes
13

Überprüfen Sie Ihre .gitignoreDatei noch einmal, um sicherzustellen, dass die Datei von Git gesehen werden kann. Ebenso gibt es eine Datei .git/info/exclude, die Dateien / Verzeichnisse aus dem Projekt ausschließt, genau wie eine .gitignoreDatei.

Spatz
quelle
Ich würde auch hinzufügen, um zu überprüfen, ob die Dateien nicht irgendwie "bereits hinzugefügt" sind oder nicht ...
Rogerdpack
9

Ich hatte gerade dieses Problem und das Problem war, dass ich mich in einem Verzeichnis befand und nicht auf der obersten Ebene. Sobald ich auf die oberste Ebene gegangen bin, hat es funktioniert.

Gaoagong
quelle
2
Ich bin sicher, ich hätte git add ..oder was auch immer erforderlich sein können, um auf das Niveau zu gelangen, unter dem meine Änderungen existierten, und es hätte auch funktioniert. Dies ist hier nur ein Gotcha-Problem (mein Benutzerfehler).
Gaoagong
8

Am besten kopieren Sie Ihren Ordner. Löschen Sie das Original. Klonen Sie das Projekt von Github, kopieren Sie Ihre neuen Dateien in den neuen geklonten Ordner und versuchen Sie es erneut.

Chris G.
quelle
Dies funktionierte für mich, indem ich git auf CygWin verwendete und einige Nachrichten über "Berechtigungen außer Betrieb" erhielt. Ich musste nicht einmal die geänderten Dateien klonen und kopieren, sondern habe das Verzeichnis einfach so dupliziert, wie es war. Ich denke, Windows zu zwingen, alles neu zu schreiben, bedeutet, dass es die Berechtigungsprobleme behebt.
RoG
5

Ich hatte dieses Problem mit dem ersten Programm im Ordner. Ich habe "git add" und dann "git commit". "git status" gab den beschriebenen Fehler an, dh "nichts festzuschreiben, Arbeitsverzeichnis sauber"

Am Ende habe ich die .git-Datei aus dem Programmordner gelöscht. Dann habe ich ein neues Git-Init, Git-Add und Git-Commit gemacht und es hat funktioniert.

Codelearner336
quelle
Für mich war es umgekehrt. Ich war in einem Zusammenführungskonflikt (Rebase) und musste cdin den Ordner zur git addDatei.
LosManos
3

Wie wäre es mit dem Standardverfahren:

git add folder
git commit

Dadurch werden der Ordner und alle seine Dateien mit einem einzigen Befehl hinzugefügt.
Bitte beachten Sie, dass git keine leeren Ordner speichern kann.

Wenn das Festschreiben nicht funktioniert hat, sollten Sie es wahrscheinlich zuerst überprüfen .gitignore.

Andrejs Cainikovs
quelle
6
Bitte beachten Sie, dass git keine leeren Ordner speichern kann. TY!
Blundell
3

Hier finden Sie eine Antwort auf das gleiche Problem:

Im Grunde war das Problem in diesem Fall das Ignorieren von global_git

Max_Power89
quelle
2

In meinem Fall wurde das Problem mit der Option SafeCrLf aktiviert. Ich bin an Fenstern mit Schildkrötengit. Nach dem Deaktivieren der Option war das Hinzufügen der Dateien kein Problem mehr.

kode
quelle
2

Ein weiteres Problem können Dateiberechtigungen sein. Versuchen Sie Folgendes auszugeben: chmod 755 file1

MAQ
quelle
2

Dumme Lösung von mir, aber ich dachte, dass es keine neuen Dateien hinzufügt und pusht, weil github.com nicht die Dateien anzeigt, die ich gerade gepusht habe. Ich hatte vergessen, dass sich die von mir hinzugefügten Dateien in einem anderen Zweig befanden. Die Dateien hatten ganz gut gepusht. Ich musste von meinem Hauptzweig zum neuen Zweig in Github wechseln, um sie zu sehen. Habe ein paar Minuten verloren :)

David Peterson
quelle
1

Es ist (für mich) unmöglich, die erste Datei zu einem leeren Repository hinzuzufügen, das von GitHub geklont wurde . Sie müssen dem Link README folgen, den GitHub erstellen möchte. Nachdem Sie Ihre erste Datei online erstellt haben , können Sie normal mit git arbeiten.

Das ist mir am 17. November 2016 passiert.

Jarekczek
quelle
1

Ich bin immer noch ein Anfänger in Git, und es war nur ein dummer Fehler, den ich gemacht habe, lange Geschichte in einem Satz. Ich war nicht in einem Unterordner, wie @gaoagong berichtete, sondern umgekehrt in einem übergeordneten Ordner. Seltsamerweise kam mir die Idee aus dieser Antwort nicht, stattdessen kam die Idee beim Testen auf git add --all, siehe die lange Geschichte unten.

Beispiel im Detail. Tatsächliches Repo:

Geben Sie hier die Bildbeschreibung ein

Der übergeordnete Ordner, den ich versehentlich auf übergeordneter Ebene geöffnet hatte (in meinem Fall vscode_git):

Geben Sie hier die Bildbeschreibung ein

Ich hatte ein Repo geklont, aber ich hatte einen übergeordneten Ordner über diesem Repo, den ich stattdessen geöffnet hatte, und dann versuchte ich, eine Datei des Repos des Unterordners mit hinzuzufügen git add 'd:\Stack Overflow\vscode_git\vscode-java\.github\ISSUE_TEMPLATE.md', die einfach nichts tat, keine Warnmeldung, und das git statussagte danach:

Es wurde nichts zum Festschreiben hinzugefügt, aber nicht verfolgte Dateien sind vorhanden (verwenden Sie "git add", um zu verfolgen).

Geben Sie hier die Bildbeschreibung ein

Laufen git add --allgab mir die gelben Noten:

Warnung: Hinzufügen eines eingebetteten Git-Repositorys: vscode-java das eingebettete Repository und weiß nicht, wie man es erhält.

Hinweis: Wenn Sie ein Submodul hinzufügen möchten, verwenden Sie: git submodule add vscode-java

Hinweis: Wenn Sie diesen Pfad versehentlich hinzugefügt haben, können Sie ihn mit git rm --cached vscode-java aus dem Index entfernen

Weitere Informationen finden Sie unter "git help submodule"

Geben Sie hier die Bildbeschreibung ein

Um dies zu beheben, kehrte ich git add --allmit git rm --cached -r -f -- "d:\Stack Overflow\vscode_git\vscode-java" rm 'vscode-java':

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie dann einfach den eigentlichen Repo-Ordner.

Geben Sie hier die Bildbeschreibung ein

Der Idiot funktionierte wieder wie erwartet. Natürlich könnte der Ordner ".git" des übergeordneten Ordners dann gelöscht werden:

Geben Sie hier die Bildbeschreibung ein

Lorenz
quelle
1

Sie können das git-initialisierte Repo rekursiv entfernen $cd repo added $git rm -rf git

Sie können einen separaten Zweig erstellen und die Submodule mit dem Hauptzweig verknüpfen. Die Dokumentation zu Submodulen ist sehr nützlich. Dokumentation [https://git-scm.com/book/en/v2/Git-Tools-Submodules]

Siehe auch einige Lösungen in [/programming/36236484/maintaining-a-git-repo-inside-another-git-repo]

Sumi
quelle
0

Ich suchte eine Weile herum und stellte schließlich fest, dass ich den SSH-Port blockiert hatte, was dazu führte, dass der Befehl git add nicht mehr funktionierte. Am Ende habe ich den Ursprung mithilfe von https mit dem folgenden Befehl geändert: git remote set-url origin [url-to-git-repo]

Topper 9
quelle
0

Ich weiß, dass dies eine wirklich alte Frage ist, aber ich weiß, dass es auch jemandem passieren kann. Es stellte sich heraus, dass ich mit einer Datei namens AUX.JS gearbeitet habe und dass dies ein reservierter Dateiname für Windows ist. Dies führte zu dem folgenden Fehler

Schwerwiegend: 'src / hoc / Aux.js' kann nicht angegeben werden: Keine solche Datei oder kein solches Verzeichnis

Sie können die Datei also entweder entfernen oder umbenennen, dann funktioniert es.

Abschließende Schlussfolgerung: Wenn Sie sich in einem Windows-Computer befinden und nach der Ausgabe des Befehls 'git add' Ausschau halten, kann er neben allen anderen gültigen Antworten auch zusätzliche Informationen bereitstellen.

Wiston Coronell
quelle
Das passiert auch für mich unter Windows. Ich habe Git Bash auf diesem Betriebssystem verwendet, um die Datei Aux.js normal zu erstellen
Alex
0

Hatte das gleiche Problem mit einem Repo, das ich von SiteGround Git auf meinen Mac geklont habe. Das frisch geklonte Repo hatte eine Liste der geänderten Dateien, diegit status die dem Commit hinzugefügt werden mussten, aber der Versuch, eine von ihnen hinzuzufügen oder auszuchecken, hat überhaupt nichts bewirkt.

Aus irgendeinem Grund gab es Falländerungen in den Dateinamen (z. B. .jpg -> .JPG). Die Lösung bestand darin, einfach git mvden Dateinamen zu verwenden, den das Betriebssystem für den Namen git verwendete, z.

git mv File_That_Wont_Add.txt File_THAT_WONT_Add.txt
Douglas Krugman
quelle
0

Ich habe dieses Problem kürzlich auf meinem Computer unter Windows 7 festgestellt. Ich verwende die Benutzeroberfläche des Befehlsfensters git. Die Lösung bestand darin, beim Hinzufügen von git sehr vorsichtig mit der Groß- und Kleinschreibung der Datei- und Verzeichnisnamen umzugehen. Obwohl sich git nicht beschweren würde, wenn der Fall nicht genau mit dem Fall der Windows-Dateisystemdatei und der Verzeichnisnamen übereinstimmt, würde es die Dateien auch nicht hinzufügen. Es würde nichts zu begehen geben. Sobald ich die Dateinamen mit der genau richtigen Schreibweise eingegeben habe, werden sie hinzugefügt und unter den Änderungen aufgelistet, die wie beabsichtigt festgeschrieben werden sollen.

jsim
quelle
0

Ich hatte dieses Problem in Visual Studio. Bei mir funktionierte Folgendes: 1- Klicken Sie mit der rechten Maustaste auf die hinzugefügte Datei, die von git nicht erkannt wird. 2- Wählen Sie "Ausgeschlossene Datei zur Quellcodeverwaltung hinzufügen".

AlexGH
quelle
0

Ich hatte das gleiche Problem und es lag daran, dass ein Programm eine Datei verwendete und Git in diesem Fall einen Fehler auslöste. Visual Studio hatte diese Datei gesperrt.

Mejía Pérez Néstor
quelle
0

Ich hatte ein Problem, bei dem Dateien aus einem Ordner nicht zur Github-Quellcodeverwaltung hinzugefügt wurden. Um dies zu beheben, habe ich den .git-Ordner gelöscht, der unter diesem Ordner erstellt wurde.

Vaibhav Ghorpade
quelle
0

Ich hatte ein ähnliches Problem.

Das Problem war, dass unter Windows im Index die Datei in einem anderen Fall als im nicht bereitgestellten Bereich hinzugefügt wurde. Im Index war die Datei beispielsweise ein Name xx.txtund im nicht bereitgestellten Bereich war die Datei ein NameXx.txt .

Die Datei mit der falschen Groß- / Kleinschreibung wurde aus dem Index ( xx.txt) entfernt. Dann konnte ich die Datei mit der richtigen Groß- / Kleinschreibung hinzufügen ( Xx.txt).

Ghigad
quelle
0

Issue Git würde keine geänderte Datei hinzufügen. Mit git bash hatte ich den Ordner geändert, der den Ordnernamen durch das doppelte Anführungszeichen begrenzt. ls zeigte den Ordnerinhalt korrekt an, aber git fügte keine geänderten Dateien hinzu.

Lösung Ich habe das einfache Anführungszeichen verwendet, um den Ordnernamen abzugrenzen.

zB CD "Ordnername" Git-Status nichts festzuschreiben, Arbeitsbaum bereinigen CD .. ls 'Ordnername' CD 'Ordnername' Git-Status geändert: ModifiedFileName.bat

Devlin
quelle
0

Ich habe alles versucht, aber nichts hat funktioniert. Später habe ich meine Eingabeaufforderung als Administrator ausgeführt und alle Phasen wiederholt, z. B. Staging-> Commit-> Remote-Hinzufügen -> Pushing. Es funktionierte wie eine Magie. Die Änderungen wurden im gewünschten Remote-Repository wiedergegeben.

Hoffe es hilft :) Bleib ruhig und codiere weiter.

PS Ich bin eine neue Biene und versuche aus dem Fehler zu lernen.

felsig
quelle
0

Ähnliches passierte für mich, als ich eine Datei zwischen umbenannte Uppercase/Lowercase. Das vorübergehende Umbenennen von Dateien kann das Problem beheben.

T.Todua
quelle
0

Überprüfen Sie in solchen Fällen die globale .gitignore-Datei auf Regeln und stellen Sie sicher, dass Ihr Ordner nicht in diese passt.

Priyanka Singh
quelle
0

So habe ich meine zum Arbeiten gebracht:

Ich fing an

git init 

innerhalb des Verzeichnisses mit allen Dateien / Ordnern, die ich einschließen wollte.

Ich rannte

git add --all
git add .
git commit -m "uploaded fixed sources 3"
git push origin master

DANN

Ich habe ein anderes Verzeichnis außerhalb des Ursprungs erstellt, bin in dieses Verzeichnis umgezogen und habe dann das vorhandene Git-Repo mithilfe der Datei http: //../../.git geklont, wie auf der Seite in Github angegeben.

Nachdem es die Quelle geklont hatte (die nur eine readme.md hatte), kopierte ich alle Dateien aus dem alten Verzeichnis in das neue mit

cp -rf ../../* .

Dann habe ich noch einmal hinzugefügt und dann diese Änderungen festgeschrieben und verschoben.

git add --all
git add .
git commit -m "uploaded fixed sources 4"
git push origin master

Fragen Sie mich nicht warum, aber diesmal wurden sie auf die Github-Site hochgeladen und als Dateien angezeigt, auf die Sie im ZIP-Tarball zugreifen können.

daemondave
quelle