it-swarm.com.de

Warum speichert 'git commit' meine Änderungen nicht?

Ich habe einen git commit -m "message" so gemacht:

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Wenn ich jedoch git status mache, werden dieselben modifizierten Dateien angezeigt:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Was mache ich falsch?

238
arezzo

Wie die Nachricht sagt:

keine Änderungen zum Festschreiben hinzugefügt (verwenden Sie "git add" und/oder "git commit -a")

Git hat einen "Staging-Bereich", in dem Dateien hinzugefügt werden müssen, bevor sie festgeschrieben werden. Sie können hier eine Erklärung dazu lesen .


Für Ihr spezielles Beispiel können Sie Folgendes verwenden:

git commit -am "save arezzo files"

(Beachten Sie die zusätzliche a in den Flags, kann auch als git commit -a -m "message" geschrieben werden - beide machen dasselbe)

Wenn Sie das, was Sie zum Commit hinzufügen, genauer auswählen möchten, verwenden Sie den Befehl git add, um dem Staging-Bereich die entsprechenden Dateien hinzuzufügen, und git status, um eine Vorschau auf das hinzuzufügende Element anzuzeigen (Denken Sie daran, den verwendeten Wortlaut zu beachten).

Allgemeine Dokumentation und Lernprogramme für die Verwendung von git finden Sie auch auf der Dokumentationsseite - git. Dort erhalten Sie weitere Informationen zum Konzept des Staging/Hinzufügen von Dateien.


Eine andere Sache, die es zu wissen gilt, ist interactive Staging. Damit können Sie Teile einer Datei zum Staging-Bereich hinzufügen Änderungen (für verwandte, aber unterschiedliche Funktionen), können Sie den interaktiven Modus verwenden, um die Änderungen aufzuteilen und jeden Teil nacheinander hinzuzufügen/zu übernehmen. Mit kleineren spezifischen Commits wie diesem kann es hilfreich sein.

383
Peter Boughton

Sie haben die Änderungen nicht hinzugefügt. Fügen Sie sie entweder gezielt über hinzu

git add filename1 filename2

oder alle Änderungen hinzufügen (aus dem Stammpfad des Projekts)

git add .

oder verwenden Sie die Kurzschreibweise -a beim Commit:

git commit -a -m "message".
47
Femaref

Du solltest tun:

git commit . -m "save arezzo files"
38
Baptiste Pernet

Sie hätten Folgendes tun können:

git add -u -n

Um zu überprüfen, welche Dateien Sie geändert haben und hinzugefügt werden sollen (Testlauf: -n-Option), und dann

git add -u

Um nur geänderte Dateien hinzuzufügen

7
Albert Vonpupp

Ich kopierte ein kleines Unterprojekt, das ich unter Git-Quellcodeverwaltung hatte, in ein anderes Projekt und vergaß das Löschen des GIT-Ordners. Beim Festschreiben bekam ich dieselbe Nachricht wie oben und konnte sie erst löschen, nachdem ich den .git-Ordner gelöscht hatte.

Es ist ein bisschen dumm, aber es lohnt sich zu überprüfen, dass sich unter dem Ordner kein .git-Ordner befindet, der nicht festgeschrieben wird.

7
Simon Hutchison

Vielleicht eine offensichtliche Sache, aber ...

Wenn Sie Probleme mit dem Index haben, verwenden Sie git-gui . Sie erhalten einen sehr guten Überblick darüber, wie der Index (Staging-Bereich) tatsächlich funktioniert.

Eine weitere Informationsquelle, die mir half, den Index zu verstehen, war Scott Chacons "Getting Git" Seite 259 und weiter.

Ich habe mit der Befehlszeile angefangen, weil die meisten Dokumentationen nur das zeigten ...

Ich denke, git-gui und gitk lassen mich schneller arbeiten, und ich habe schlechte Angewohnheiten wie "git pull" zum Beispiel beseitigt.

4
Martin

Der Grund dafür ist, dass Sie einen Ordner haben, der bereits von Git in einem anderen Ordner verfolgt wird, der auch von Git verfolgt wird. Zum Beispiel hatte ich ein Projekt und fügte einen Unterordner hinzu. Beide wurden von Git verfolgt, bevor ich eins in das andere steckte. Um die Verfolgung der darin enthaltenen zu beenden, suchen Sie sie und entfernen Sie die Git-Datei mit:

rm -rf .git

In meinem Fall hatte ich eine WordPress-Anwendung und der Ordner, den ich hinzugefügt hatte, war ein Thema. Also musste ich zum Theme-Root gehen und die Git-Datei entfernen, sodass das gesamte Projekt nun von der übergeordneten WordPress-Anwendung verfolgt wurde.

4
drjorgepolanco

Dieses Problem tritt auf, wenn ich einen git add . in einem Unterverzeichnis unter - erstellt habe, in dem sich meine .gitignore-Datei befindet (sozusagen das Ausgangsverzeichnis meines Repositorys). Ändern Sie das Verzeichnis in Ihr Verzeichnis uppermost , und führen Sie git add . gefolgt von git commit -m "my commit message" aus.

4
jam99

wenn Sie mehr Dateien in meinem Fall haben, habe ich 7000 Bilddateien wenn ich versuche, sie aus dem Routenordner des Projekts hinzuzufügen, wurde sie nicht hinzugefügt / aber wenn ich zum Bildordner gehe, ist alles in Ordnung. Gehe durch den Zielordner und befehle wie abows

git add .
git commit -am "image uploading"
git Push Origin master

git Push Origin master Aufzählen von Objekten: 6574, fertig. Objekte zählen: 100% (6574/6574), fertig. Delta-Komprimierung mit bis zu 4 Threads Komprimieren von Objekten: 100% (6347/6347), fertig. Objekte schreiben: 28% (1850/6569), 142,17 MiB | 414,00 KiB/s

0
physcode

Ich hatte ein sehr ähnliches Problem mit der gleichen Fehlermeldung. "Änderungen werden nicht zum Festspielen inszeniert", doch wenn ich einen Unterschied mache, zeigt er Unterschiede. Ich habe schließlich herausgefunden, dass ich vor einiger Zeit einen Verzeichnisfall geändert hatte. Ex. "PostgeSQL" bis "postgresql". Wie ich mich jetzt erinnere, wird git manchmal ein oder zwei Dateien im alten Fallverzeichnis hinterlassen. Dann werden Sie eine neue Version für den neuen Fall festlegen.

So weiß git nicht, auf wen man sich verlassen soll. Um das Problem zu lösen, musste ich auf die Website des Github gehen. Dann können Sie beide Fälle anzeigen. Und Sie müssen alle Dateien im falschen Verzeichnis löschen. Vergewissern Sie sich, dass Sie die richtige Version im oder im richtigen Verzeichnis gespeichert haben.

Nachdem Sie alle Dateien im alten Fallverzeichnis gelöscht haben, wird dieses gesamte Verzeichnis gelöscht. Dann mach ein Commit.

An diesem Punkt sollten Sie in der Lage sein, einen Pull auf Ihrem lokalen Computer auszuführen und die Konflikte nicht mehr zu sehen. So wieder etwas begehen können. :)

0
brianwaganer

Ich hatte ein Problem, bei dem ich commit --amend ausführte, auch nachdem ich einen git add . ausgegeben hatte und es funktionierte immer noch nicht. Es stellte sich heraus, dass ich einige .vimrc-Anpassungen vorgenommen habe und mein Editor nicht richtig funktioniert hat. Das Beheben dieser Fehler, sodass vim den richtigen Code zurückgibt, wurde das Problem behoben.

0
Brennan Cheung

wenn Sie einen Unterordner haben, der aus einem anderen git-Repository geklont wurde, müssen Sie zuerst die $ .git $ -Datei aus dem untergeordneten Repository entfernen: rm -rf .git Danach können Sie in den übergeordneten Ordner wechseln und git add -A verwenden.

0
Sam Toorchi