Wie kann ich Dateien mit git festschreiben?

82

Keines der Tutorials wird helfen!
Sie alle machen das, wo sie einfach annehmen, dass ich weiß, was zu tun ist.

Derzeit beginnt mein Terminalfenster mit ..

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    httpdocs/newsite/manifest/cache/0a432970ba6491fe65dad60b012e5c95_louloumay2011en-1-4dea3186b7f7b.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0a61b5d7a9e97da78fe602e1ad41edb6_5-4dec7c3d57c80.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0afb6a7716a85d0de46cdd03bb30f75f_fifa_panorama_full_page-01_thu-4dea3d1a0e0f5.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b3bc9be76a5d3e1e36af4b8dcf98658_free2-4df0e2e08761f.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b6342913b8e599fac76da452af98ec5_si-feb-2009-1-4dea3d1abcb61.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b9ddc587340f7744e03c4b2dafacf7f_lou-lou-winter-2009-cover-4dea3d1a9b1a0.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf64ff8fc22720b3da20d0730fa6a04_chatelaine-dec-2009-4dea3d18daa30.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf664e03eb0a2255b69b02aed85add0_summumfeb2011-2-4dea3188766aa.jpg

Aber es gibt keine Möglichkeit zu wissen, wie man das macht, was sie hier sagen.
http://learn.github.com/p/normal.html

Alles was es sagt ist

Wir geben einfach unsere Commit-Nachricht ein und verlassen den Editor.

Was bedeutet das?!
Nur weil man das Wort schreibt einfach bedeutet nicht , es ist einfach ..

Wenn ich anfange zu tippen, macht es seltsame Sachen, sagt "Aufnehmen" oder "Einfügen" und es gibt ungefähr 300 Dateien, und ich soll jede Zeile durch eine Nachricht ersetzen?!?

Hilfe !

Ich würde ihre handliche Mac-Anwendung dafür verwenden, aber wenn es über 20 Dateien oder so sind, friert es ein!
Was ist damit??

Kirk Strobeck
quelle
10
Das hat nichts mit meiner Frage zu tun. Wenn ich sagte "wie man einen Hügel hinunter fährt", dann sagst du einer Person, wie man Ski
fährt
2
Ein Commit ohne das Argument -m startet einen Texteditor, in dem Sie Ihre Kommentare abgeben können. (In diesem Fall wird standardmäßig vim verwendet.) Der Autor des Tutorials geht davon aus, dass Sie bereits wissen, wie man es verwendet.
Alex Howansky
@alex danke für die Erklärung
Kirk Strobeck
Jemand, der mit OSX besser vertraut ist als ich, kann Ihnen wahrscheinlich sagen, wie Sie Ihren Standardeditor auf etwas anderes einstellen können. Normalerweise ist es "export EDITOR = / path / to / Whatever" in Ihrer Shell-Startkonfiguration.
Alex Howansky
6
-1 für die RT [F] M. Der Standardeditor scheint das Problem zu sein, nicht das Fehlen des Lesens der Git-Dokumentation.
Philip Oakley

Antworten:

91

Wenn Sie git commitohne Argumente ausführen , wird Ihr Standardeditor geöffnet, in dem Sie eine Festschreibungsnachricht eingeben können. Durch Speichern der Datei und Beenden des Editors wird das Commit ausgeführt.

Es sieht so aus, als ob Ihr Standardeditor Vi oder Vim ist. Der Grund, warum "seltsames Zeug" beim Tippen passiert, ist, dass Vi nicht im Einfügemodus startet - Sie müssen zuerst iauf Ihre Tastatur drücken! Wenn Sie das nicht möchten, können Sie es in etwas Einfacheres ändern, zum Beispiel:

git config --global core.editor nano

Dann laden Sie den Nano-Editor (vorausgesetzt, er ist installiert!), Wenn Sie ein Commit ausführen. Dies ist für Benutzer, die keinen modalen Editor wie Vi verwendet haben, viel intuitiver.

Dieser Text, den Sie auf Ihrem Bildschirm sehen, soll Sie nur daran erinnern, was Sie festschreiben möchten. Vor den Zeilen stehen #Kommentare, dh Git ignoriert diese Zeilen, wenn Sie Ihre Commit-Nachricht speichern. Sie müssen keine Nachricht pro Datei eingeben - geben Sie einfach einen Text oben im Puffer des Editors ein.

Um den Editor zu umgehen, können Sie eine Commit-Nachricht als Argument angeben, z

git commit -m "Added foo to the bar"
Ben James
quelle
Wenn Sie "ignorieren" sagen, bedeutet das, dass es inszeniert bleibt?
Kirk Strobeck
3
Nein, diese Zeilen haben keinen Einfluss darauf, was festgeschrieben wird. Diese Dateien werden auch dann festgeschrieben, wenn Sie die Kommentarzeilen löschen. Sie sind nur eine Erinnerung an den Status Ihres Repositorys, als Sie den git commitBefehl ausgeführt haben.
Ben James
Wenn ich also das Commit ausführe, wird die Änderung aufgezeichnet, auch wenn sich #in dieser Zeile eine befindet.
Kirk Strobeck
2
Das ist richtig. Was festgeschrieben wird, ist das, was git adddem Index hinzugefügt wurde.
Ben James
Eine andere Option ist git commit, dass Sie stattdessen ausführen können. git commit -a -m "Your message for the commit"Dann wird kein Editor ausgeführt.
26

Es hört sich so an, als ob das einzige Problem hier darin besteht, dass der gestartete Standardeditor vioder ist vim, mit dem Sie nicht vertraut sind. (Wie schnelle Spitze, um diesen Editor zu verlassen , ohne die Änderungen zu speichern, drücken Sie Escein paar Mal und geben Sie dann :, q, !und Enter.)

Es gibt verschiedene Möglichkeiten, Ihren Standardeditor einzurichten, und Sie haben nicht angegeben, welches Betriebssystem Sie verwenden. Daher ist es schwierig, einen bestimmten zu empfehlen. Ich würde vorschlagen, Folgendes zu verwenden:

 git config --global core.editor "name-of-your-editor"

... wodurch eine globale Git-Präferenz für einen bestimmten Editor festgelegt wird. Alternativ können Sie die $EDITORUmgebungsvariable festlegen .

Mark Longair
quelle
Ihr vimSpickzettel ist wertvoll, besonders für diejenigen, die aus der Community "Ein Symbol ist tausend Befehlszeilen wert ;-)" stammen
Philip Oakley
Ich fand gerade viemu.com/a-why-vi-vim.html besonders hilfreich, um zu erklären, warum vi / vim immer noch hier ist. Dann migrieren Sie zum Tastatur-Spickzettel viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
Philip Oakley
21

Im Standard-Vi-Editor sollten Sie in dieser Situation

  1. Drücken Sie die Esc-Taste
  2. Typ ": wq" (ohne Anführungszeichen)
  3. Drücken Sie Enter
Oner Ksor
quelle
15

Der Befehl zum Festschreiben aller geänderten Dateien:

git commit -a -m 'My commit comments'

-a = alle bearbeiteten Dateien

-m = Die folgende Zeichenfolge ist ein Kommentar.

Dadurch wird das Repo Ihrer lokalen Laufwerke / Ordner festgeschrieben. Wenn Sie Ihre Änderungen auf einen Git-Server / remote gehosteten Server übertragen möchten, geben Sie nach dem obigen Befehlstyp Folgendes ein:

git push

GitHubs Spickzettel ist sehr praktisch.

Ali
quelle
13

Ich kenne Ihre Systemumgebung nicht, aber anscheinend haben Sie Folgendes eingegeben:

git commit

Und Ihr Standardeditor wurde gestartet. Im schlimmsten Fall (für Sie) könnte es vim gewesen sein :)

Wenn Sie nicht wissen, wie Sie vim beenden können, verwenden Sie: q.

Wenn Sie weitere Probleme haben, können Sie verwenden

git commit -m 'Type your commit message here'
pkk
quelle
Gibt es eine Möglichkeit, einen anderen Editor auszuwählen, mit dem er geöffnet wird? Wie Nano?
Kirk Strobeck
1
Sicher: Dies sollte den Standardeditor in nano ändern: git config --global core.editor nano
pkk
Nachricht in doppelten Anführungszeichen .. "Nachricht"
Prabs
2

Git verwendet "den Index", um Commits vorzubereiten. Sie können Änderungen vor dem Festschreiben zum Index hinzufügen und daraus entfernen (in Ihrer Einfügung haben Sie bereits ~ 10 Dateien mit gelöscht git rm). Wenn der Index so aussieht, wie Sie ihn möchten, führen Sie ihn aus git commit.

Normalerweise wird dies ausgelöst vim. Um einen Texttreffer einzufügen i, <esc>kehren Sie zum normalen Modus zurück, drücken Sie, um ZZzu speichern und zu beenden (um ZQzu beenden, ohne zu speichern). voilà, da ist dein Commit

stricken
quelle
2

Dies geschieht, wenn Sie beim Festschreiben mit Folgendes keine Nachricht einfügen:

git commit

Es wird eine Editorumgebung gestartet. Beenden Sie es durch Eingabe:q! die Eingabetaste und drücken.

Sie werden ohne Verpflichtung zum Terminal zurückgebracht. Versuchen Sie es also erneut. Geben Sie diesmal eine Nachricht ein:

git commit -m 'Initial commit'
juliarm
quelle
1
Dies hat mir mehr als die akzeptierte Antwort geholfen, indem ich den Kontext erklärt habe, was passiert und wie man "seltsame Sachen" wieder normal macht.
Timmackay
1

Es sieht so aus, als ob alle Änderungen bereits Teil des Index sind. Verwenden Sie zum Festschreiben einfach den commitBefehl

git commit -m "My Commit Message"

Wenn ich Ihre Nachrichten betrachte, obwohl mein Instinkt sagt, dass Sie wahrscheinlich nicht möchten, dass die cacheDateien in Ihr Depot aufgenommen werden. Vor allem, wenn es etwas ist, das im laufenden Betrieb beim Ausführen Ihres Programms erstellt wird. Wenn ja, sollten Sie der .gitignore-Datei die folgende Zeile hinzufügen

httpdocs/newsite/manifest/cache/*
JaredPar
quelle
Es war ein Teilprojekt, das ganze Verzeichnis wird entfernt.
Kirk Strobeck
Um zu sehen, was alle Befehle git Typen hat git --helpdies werden Sie alle Befehle wie commit, push, pull, cloneusw. Um Hilfe zu einem bestimmten Befehl zu erhalten und was die Schalter sind Typ git commit --help, git push --helpsoll dies auf Linux und Mac Kommandozeile arbeiten. Wenn Sie eine gute Befehlszeilen-App wünschen, würde ich den gleichen git-scmLink empfehlen, den Github auf dieser Seite verlinkt . help.github.com/mac-set-up-git
Ali
1

Ich hatte das gleiche Problem, ich habe es durch Tippen gelöst und :q!dann gedrückt. Enter Und es hat mein Problem gelöst. Führen Sie danach den folgenden Befehl aus git commit -a -m "your comment here"

Dies sollte Ihr Problem lösen.

Kelvin Nyadzayo
quelle
1
Diese Antwort wird hier bereits gegeben ( stackoverflow.com/a/7080907/2827823 ) ... eigentlich zweimal, also brauchen wir keine mehr.
Ason