Das Frustrierende ist, dass dies früher möglich war und die Standardsyntax zum Festschreiben und Hinzufügen neuer Dateien war: git commit -a Aber natürlich hat sich die git-Syntax geändert. Es verwirrte vorhandene Benutzer (und brach ihre Skripte), beseitigte nützliche Funktionen und ersetzte ein unnötiges Flag.
Fidschiaaron
1
Es gibt ein Duplikat davon bei git add -A, git commit in einem Befehl? . Die dort akzeptierte Antwort ähnelt der hier akzeptierten Antwort, schlägt jedoch vor, einen Git-Alias zu erstellen, um die Eingabe zu verkürzen (und zeigt, wie dies zu tun ist).
Aktualisieren Sie den Index nicht nur dort, wo der Arbeitsbaum eine übereinstimmende Datei aufweist, sondern auch dort, wo der Index bereits einen Eintrag enthält. Dadurch werden Indexeinträge hinzugefügt, geändert und entfernt, um sie an den Arbeitsbaum anzupassen.
Wenn <pathspec>bei Verwendung der Option -A kein angegeben wird, werden alle Dateien im gesamten Arbeitsbaum aktualisiert (alte Versionen von Git beschränken die Aktualisierung auf das aktuelle Verzeichnis und seine Unterverzeichnisse).
man könnte das in seine eigene .sh- oder .bat-Datei einfügen und es einfach als einen Befehl verwenden. Die Nachricht könnte param1
BlueWizard
Außerdem können Sie Verknüpfungen für grundlegende Git-Befehle in Ihrem .bashrc hinzufügen: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset --hard origin / master '
ni3
3
In Powershell ersetzen Sie "&&" durch ";" um beide Befehle wie git add -A ; git commit -m "Your Message"
Rafael Miceli
415
Dieser Befehl fügt alle geänderten Dateien hinzu und schreibt sie fest, jedoch keine neu erstellten Dateien .
git commit -am "<commit message>"
Vom Menschen git-commit:
-a, --all
Tell the command to automatically stage files that have been modified
and deleted, but new files you have not told Git about are not
affected.
Dies beantwortet die Frage nicht wirklich, sondern schließt speziell (in Fettdruck nicht weniger) einen der Schlüsselteile der gesuchten Lösung aus.
Arunas
6
Fügt keine nicht verfolgten Dateien hinzu oder schreibt sie fest.
15.
3
Aber es deckt die typischste Situation ab, wenn Sie nach "git add -A" festschreiben und feststellen, dass Sie vergessen haben, etwas Kleines im Code zu ändern. Ich hasse es, dieselbe Commit-Nachricht mehrmals von Grund auf neu zu schreiben
KorbenDallas
aber der Thread-Starter sagt ALLE DATEIEN, also denke ich, dass dieser nicht zählt
Frederick G. Sandalo
Außerdem können Sie Verknüpfungen für grundlegende Git-Befehle in Ihrem .bashrc hinzufügen: alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset --hard origin / master '
ni3
26
Ich benutze diese Funktion:
gcaa() { git add --all && git commit -m "$*" }
In meiner zsh-Konfigurationsdatei kann ich also einfach Folgendes tun:
> gcaa This is the commit message
Automatisches Bereitstellen und Festschreiben aller Dateien.
@Damilola - was meinst du mit Bash-like ? Die Syntax in der Antwort funktioniert auch in Bash
Eliran Malka
das ist schön, ich habe vorher einen alias wie verwendet, gaa && gc -m "my commit"aber das ist so viel schöner ... <eilt davon, um bashrc zu ändern ..>
andy mccullough
24
Einzeiler zum Bereitstellen ALLER Dateien ( geändert , gelöscht und neu ) und Festschreiben mit Kommentar:
Einzeiler, aber kein einziger Befehl (was das OP verlangte)
Eliran Malka
24
Ich bin mir nicht sicher, warum diese Antworten alle um das herum tanzen, was ich für die richtige Lösung halte, aber für das, was es hier wert ist, verwende ich Folgendes:
Wenn Sie nur eine "schnelle und schmutzige" Methode zum Speichern von Änderungen im aktuellen Zweig wünschen, können Sie den folgenden Alias verwenden:
Nachdem Sie diesen Befehl ausgeführt haben, können Sie einfach eingeben git temp, damit git alle Ihre Änderungen automatisch als Commit mit dem Namen "Temp" in den aktuellen Zweig festschreibt. Anschließend können Sie git reset HEAD~die Änderungen später "aufheben", damit Sie weiter daran arbeiten können, oder git commit --amenddem Festschreiben weitere Änderungen hinzufügen und / oder ihm einen richtigen Namen geben.
Ich würde es hassen, mit einem Repository zu arbeiten, das mit Commit-Nachrichten gefüllt ist, in denen "none" steht, und ich würde auch PRs auf dieser Basis ablehnen. Leider können Sie nur lernen, wie wichtig gute Commit-Nachrichten sind, wenn Sie zurückkehren müssen, um etwas zu prüfen, das vor langer Zeit geschrieben wurde ("Diese Zeile verursacht einen Fehler ... warum wurde sie überhaupt hinzugefügt und wird irgendetwas tun) Pause, wenn ich es ändere / entferne? ").
Gregmac
1
Commits mit "none" sollen niemals lange bleiben. Normalerweise starte ich meinen eigenen Feature-Zweig, mache Micro-Commits und zerquetsche sie vor einer Zusammenführung zu etwas Vernünftigerem. Offensichtlich brauchen Leute, die Commits für jede modifizierte Funktion ausführen und sich nicht um ein vollständiges Git-Protokoll kümmern, dies nicht.
SystematicFrank
1
Ich verwende zu diesem Zweck 'wip' (kurz für "work in progress") anstelle von 'none' und übertrage solche Commits nur an meine privaten Filialen.
Sergej Koščejev
Es ist immer noch nicht hilfreich, da diese "Wip" - oder "None" -Commits es schließlich in einen Zweig schaffen, den andere Leute sehen, und das Nachrichtenprotokoll verschmutzen. Wenn Sie alle Ihre Commits unterdrücken, bevor Sie pushen, wäre das akzeptabel, aber ansonsten ist es für das Team immer noch ärgerlich.
Jordanien
Dies ist eine gute Idee, und wenn Sie sie mit der nächsten Antwort kombinieren, erhalten Sie tatsächlich die 100% genaue Antwort für das OP. In meiner Antwort habe ich die notwendigen Schritte (mit git-bash) beschrieben. ( stackoverflow.com/a/43442269/869239 )
VeRo
3
Führen Sie den angegebenen Befehl aus
git add .&& git commit -m "Changes Committed"
Selbst wenn es sich um einen einzelnen Befehl handelt, werden zwei separate Befehle nacheinander ausgeführt. Hier haben wir sie nur &&kombiniert. Es ist nicht viel anders als laufen
git add .und git commit -m "Changes Committed"separat. Sie können mehrere Befehle gleichzeitig ausführen, aber die Reihenfolge spielt hier eine Rolle. Wenn Sie die Änderungen zusammen mit Staging und Commit auf den Remote-Server übertragen möchten, können Sie dies wie angegeben tun.
Wenn Sie stattdessen die Reihenfolge ändern und die pusherste setzen, wird sie zuerst ausgeführt und gibt nach dem Staging und Commit nicht den gewünschten Push aus, nur weil sie bereits zuerst ausgeführt wurde.
&&führt den zweiten Befehl in der Zeile aus, wenn der erste Befehl erfolgreich zurückkommt, oder mit einer Fehlerstufe von 0. Das Gegenteil von &&ist ||, das den zweiten Befehl ausführt, wenn der erste Befehl nicht erfolgreich ist, oder mit einer Fehlerstufe von 1.
Alternativ können Sie alise as erstellen git config --global alias.addcommit '!git add -a && git commit -m'und als verwendengit addcommit -m "Added and commited new files"
Sie können ein kleines Skript schreiben (siehe Ian Clellands Antwort), git-commitalldas mehrere Git-Befehle verwendet, um das auszuführen, was Sie tun möchten.
Platzieren Sie dieses Skript an einer beliebigen Stelle in Ihrem $PATH. Sie können es so nennen git commitall... sehr praktisch!
Gefunden hier (Frage und alle Antworten leider gelöscht, nur mit hohem Ansehen sichtbar)
Der ganze Thread ist eine gute Lektüre ... deshalb habe ich ihn verlinkt ^^
tanascius
@ Dimitri - leider haben einige Studid-Leute beschlossen, diesen nützlichen Thread zu löschen. Es ist immer noch mit hohem Ansehen sichtbar, daher behalte ich den Link hier.
Antworten:
Tut
als "Einzelbefehl" zählen?
Bearbeiten Sie basierend auf der Antwort von @ thefinnomenon unten :
Um es als zu haben
git alias
, verwenden Sie:und schreiben Sie alle Dateien, einschließlich neuer Dateien, mit einer Nachricht fest mit:
Erklärung (aus der
git add
Dokumentation ):quelle
git add -A ; git commit -m "Your Message"
Dieser Befehl fügt alle geänderten Dateien hinzu und schreibt sie fest, jedoch keine neu erstellten Dateien .
Vom Menschen git-commit:
quelle
Ich benutze diese Funktion:
In meiner zsh-Konfigurationsdatei kann ich also einfach Folgendes tun:
Automatisches Bereitstellen und Festschreiben aller Dateien.
quelle
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
aber das ist so viel schöner ... <eilt davon, um bashrc zu ändern ..>Einzeiler zum Bereitstellen ALLER Dateien ( geändert , gelöscht und neu ) und Festschreiben mit Kommentar:
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
quelle
Ich bin mir nicht sicher, warum diese Antworten alle um das herum tanzen, was ich für die richtige Lösung halte, aber für das, was es hier wert ist, verwende ich Folgendes:
Erstellen Sie einen Alias:
Alle Dateien hinzufügen und mit Nachricht festschreiben:
HINWEIS:
coa
steht für Commit All und kann durch alles ersetzt werden, was Ihr Herz begehrtquelle
git alias
Weg gesucht , der Rest ist langweilig.Das Festschreiben in git kann je nach Situation ein mehrstufiger Prozess oder ein Schritt sein.
In dieser Situation haben Sie mehrere Dateien aktualisiert und möchten Folgendes festschreiben:
Sie müssen alle geänderten Dateien hinzufügen, bevor Sie etwas festschreiben.
oder
Danach können Sie alle hinzugefügten Dateien festschreiben
Dazu müssen Sie die Nachricht für dieses Commit hinzufügen.
quelle
Wenn Sie nur eine "schnelle und schmutzige" Methode zum Speichern von Änderungen im aktuellen Zweig wünschen, können Sie den folgenden Alias verwenden:
Nachdem Sie diesen Befehl ausgeführt haben, können Sie einfach eingeben
git temp
, damit git alle Ihre Änderungen automatisch als Commit mit dem Namen "Temp" in den aktuellen Zweig festschreibt. Anschließend können Siegit reset HEAD~
die Änderungen später "aufheben", damit Sie weiter daran arbeiten können, odergit commit --amend
dem Festschreiben weitere Änderungen hinzufügen und / oder ihm einen richtigen Namen geben.quelle
Ich habe in meiner Konfiguration zwei Aliase:
Wenn ich zu faul bin, begebe ich einfach alle Änderungen mit
und nur um ein schnelles Commit zu machen
coa steht für "alles begehen"
quelle
Führen Sie den angegebenen Befehl aus
Selbst wenn es sich um einen einzelnen Befehl handelt, werden zwei separate Befehle nacheinander ausgeführt. Hier haben wir sie nur
&&
kombiniert. Es ist nicht viel anders als laufengit add .
undgit commit -m "Changes Committed"
separat. Sie können mehrere Befehle gleichzeitig ausführen, aber die Reihenfolge spielt hier eine Rolle. Wenn Sie die Änderungen zusammen mit Staging und Commit auf den Remote-Server übertragen möchten, können Sie dies wie angegeben tun.Wenn Sie stattdessen die Reihenfolge ändern und die
push
erste setzen, wird sie zuerst ausgeführt und gibt nach dem Staging und Commit nicht den gewünschten Push aus, nur weil sie bereits zuerst ausgeführt wurde.&&
führt den zweiten Befehl in der Zeile aus, wenn der erste Befehl erfolgreich zurückkommt, oder mit einer Fehlerstufe von 0. Das Gegenteil von&&
ist||
, das den zweiten Befehl ausführt, wenn der erste Befehl nicht erfolgreich ist, oder mit einer Fehlerstufe von 1.Alternativ können Sie alise as erstellen
git config --global alias.addcommit '!git add -a && git commit -m'
und als verwendengit addcommit -m "Added and commited new files"
quelle
Tolle Antworten, aber wenn Sie nach einer einzigen Zeile suchen, können Sie alles verketten, aliasisieren und die Bequemlichkeit genießen:
git add * && git commit -am "<commit message>"
Es ist eine einzelne Zeile, aber zwei Befehle, und wie bereits erwähnt, können Sie diese Befehle als Alias verwenden:
alias git-aac="git add * && git commit -am "
(Das Leerzeichen am Ende ist wichtig), da Sie den neuen Kurzhandbefehl parametrieren werden.Von diesem Moment an verwenden Sie diesen Alias:
git-acc "<commit message>"
Sie sagen im Grunde:
git, füge für mich alle nicht verfolgten Dateien hinzu und schreibe sie mit dieser gegebenen Festschreibungsnachricht fest.
Hoffe du benutzt Linux, hoffe das hilft.
quelle
Sie können ein kleines Skript schreiben (siehe Ian Clellands Antwort),
git-commitall
das mehrere Git-Befehle verwendet, um das auszuführen, was Sie tun möchten.Platzieren Sie dieses Skript an einer beliebigen Stelle in Ihrem
$PATH
. Sie können es so nennengit commitall
... sehr praktisch!Gefunden hier (Frage und alle Antworten leider gelöscht, nur mit hohem Ansehen sichtbar)
quelle
versuchen Sie es mit:
quelle