Git hinzufügen und in einem Befehl festschreiben


392

Kann ich das auf irgendeine Weise tun?

git add -A
git commit -m "commit message"

in einem Befehl?

Ich scheine diese beiden Befehle viel zu tun, und wenn Git eine Option wie hätte git commit -Am "commit message", würde dies das Leben so viel bequemer machen.

git commithat den -aModifikator, aber er macht nicht ganz das Gleiche wie git add -Avor dem Festschreiben. git add -Afügt neu erstellte Dateien hinzu, aber git commit -amnicht. Was macht?



1
Zeitersparnis und Festschreiben Jede Änderung ist besser, also verwende ich Git Commit -am"yes the code in committed"
Rizo

git add .ist eine schnellere Option zum Hinzufügen aller
Ryan

Antworten:


419

Sie können Git-Aliase verwenden, z

git config --global alias.add-commit '!git add -A && git commit'

und benutze es mit

git add-commit -m 'My commit message'

BEARBEITEN: Zurück zu Häkchen ('), da dies sonst bei der Shell-Erweiterung unter Linux fehlschlägt. Unter Windows sollte stattdessen doppelte Anführungszeichen (") verwendet werden (in den Kommentaren angegeben, nicht überprüft).


24
Verwenden Sie git config --global --unset alias.<your_alias>diese Option, um den Alias ​​zu deaktivieren.
TMOTTM

11
@MrFusion Der Befehl wird zu einem externen Shell-Befehl anstelle einer Verknüpfung zum internen git-Befehl, dh die gesamte Zeile wird als separater Prozess ausgeführt.
Martin C.

8
Ich bevorzuge es, git config --global alias.add-commit '!git add -A && git commit -m'damit ich nicht -mjedes Mal tippen muss.
Glühlampenmann

21
Ich bin zu faul, um jedes Mal 'add-commit' und '-m' einzugeben. Folglich tippe ich: git config --global alias.ac '!git add -A && git commit -m' einmal und jedes Mal, wenn ich nur tippe: git ac 'comment' :)
Navid Vafaei

5
git config --global alias.add-commit "!git add -A && git commit"(dh doppelte Anführungszeichen anstelle von einfachen Anführungszeichen) funktioniert unter Windows.
Saheed

269
git commit -am "message"

ist eine einfache Möglichkeit, git anzuweisen, gelöschte Dateien zu löschen, aber ich empfehle solche Catch-All-Workflows im Allgemeinen nicht. Git-Commits sollten in der besten Praxis ziemlich atomar sein und nur wenige Dateien betreffen.

git add .
git commit -m "message"

ist eine einfache Möglichkeit, alle neuen oder geänderten Dateien hinzuzufügen. Es gilt auch die Gesamtqualifikation. Die obigen Befehle löschen keine Dateien, die ohne den git rmBefehl gelöscht wurden .

git add app
git commit -m "message"

ist eine einfache Möglichkeit, alle Dateien aus einem einzigen Verzeichnis, in diesem Fall dem Verzeichnis, zum Index hinzuzufügen app.


41
oder einfach git commit -am "message"- stellen Sie einfach sicher, dass es keine neuen Dateien gibt, die git noch nicht aufgenommen hat. Andernfalls müssen Sie git add . &&davor verwenden ... um dies in einer Zeile zu tun.
Courtsimas

2
Entschuldigung, aber die ursprüngliche Frage war genau dies - vermeiden, git add .falls Dateien hinzugefügt wurden
gorn

50

Um es in einer Zeile zu halten, verwenden Sie:

git add . && git commit -am "comment"

In dieser Zeile werden alle geänderten und hinzugefügten Dateien zum Repository hinzugefügt und festgeschrieben.


12
Es sollte beachtet werden, dass dies spezifisch für eine Linux-Shell ist (Bash und möglicherweise andere).
R. Martinho Fernandes

6
git commit -am "comment"ist perfekt
Abhishek Bedi

2
Wenn Sie verwendet haben: git add . Dann müssen Sie nicht die Option -a verwenden , sondern nur:git commit -m "comment"
Duc Chi

18

Kombinieren Sie einfach Ihre Befehle:

git add -A && git commit -m "comment" 

18

Nur die Antwort von Ales und den Kommentar des Courtsimas für Linux Bash anpassen :

Um es in einer Zeile zu halten, verwenden Sie:

git commit -am "comment"

In dieser Zeile werden alle geänderten Daten zum Repository hinzugefügt und festgeschrieben.

Stellen Sie nur sicher, dass es keine neuen Dateien gibt , die git noch nicht aufgenommen hat. Andernfalls müssen Sie Folgendes verwenden:

git add . ; git commit -am "message"


Wie geht das git commit -am "comment", aber nur für 1 Datei? Sagen wir file.txt .
Santosh Kumar

git commit -am "comment"ist eine Verknüpfung zum Hinzufügen und Festschreiben aller geänderten Dateien. Wenn Sie nur 1 Datei hinzufügen und git add file.txt ; git commit -m "comment"
festschreiben

Im zweiten Fall muss -a nicht mit m hinzugefügt werden. Es sollte git hinzufügen. ;; Git Commit -m "Nachricht"
Manish Bansal

12

In der späteren Version von git können Sie Folgendes hinzufügen und festschreiben

git commit -a -m "commit message"

Zusätzlich haben Sie einen Alias:

[alias]
    ac = commit -a -m

Dann können Sie es so verwenden:

git ac "commit message"

6
Dieser Befehl schreibt nicht die neuen Dateien fest, sondern nur die aktualisierten.
Ruvim

11

Auf meinem Windows-Computer habe ich diesen .bashrcAlias ​​eingerichtet, um den gesamten Vorgang zu vereinfachen.

  • Erstellen / lokalisieren Ihr .bashrc- siehe SO Thread
  • Fügen Sie der Datei die folgende Zeile hinzu

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    

    Es fügt Commit und Push hinzu. Passen Sie es auf irgendeine Weise an, sagen Sie, Sie möchten nicht, dass der Push-Befehl diesen Teil entfernt

  • Laden Sie .bashrcIhre Shell neu / schließen Sie sie und öffnen Sie sie erneut

  • Jetzt können Sie den gesamten Vorgang mit gacpBefehl ausführen.

Zu Ihrer Information, dieses Skript enthält ein git push. Kopieren Sie das nicht und fügen Sie es ein.
Yar

11

ziemlich sicher, dass Sie verwenden können:

git commit -am "commit all the things"

1
Dieser Befehl ist der kürzeste und wahrscheinlich einfachste Weg, um das gewünschte Ergebnis zu erzielen. Test auf Git Version 2.6.3.windows.1.
Ithar

5
Dadurch werden jedoch keine neu hinzugefügten Dateien festgeschrieben, nur die "aktualisierten"!
user13107

1
RICHTIG wird es nicht beginnen, Dateien zu verfolgen, die nicht verfolgt werden
Blair Anderson

@BlairAnderson - Gibt es einen Befehl zum Hinzufügen von nicht verfolgten Dateien auch mit add und commit?
MasterJoe2

6

Wenn Sie Folgendes eingeben:

git config --global alias.a '!git add -A && git commit -m'

Einmal müssen Sie nur noch tippen

git a

jedes Mal:

git a 'your comment'

4
Dies sollte die beste Antwort sein, super einfach und enthält im Gegensatz zu den meisten anderen Vorschlägen UNTRACKED-Dateien.
JesseBoyd

6

Benutz einfach:

git commit -m "message" .     

Beachten Sie das "." am Ende ... das kann auch ein Pfad zu einer Datei / einem Verzeichnis sein


Funktioniert dies für neu erstellte oder nur für vorhandene Dateien, die geändert werden?
MasterJoe2

5

Ich mache eine Muschel

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"

Speichern Sie zum Beispiel git.sh und rufen Sie später auf:

sh git.sh your commit message

1
nicht auf andere Betriebssysteme portierbar, und Git kann dies selbst tun. Worum geht es also?
naught101

2
@ naught101 Es ist offensichtlich, dass Git dies selbst tun kann. Der Punkt ist, dass diese Shell dazu dient, den Prozess für Benutzer von Git unter Linux zu rationalisieren. Es ist viel einfacher, eine sh git.sh-Commit-Nachricht auszuführen und nicht portabel zu machen bedeutet nicht, dass es richtig funktioniert.
Ademar111190

5

Ich habe diese Funktion in meinem .bash_profileoder .profileoder .zprofileoder was auch immer in Login-Shells bezogen wird:

function gac () {
  # Usage: gac [files] [message]
  # gac (git add commit) stages files specified by the first argument
  # and commits the changes with a message specified by the second argument.
  # Using quotes one can add multiple files at once: gac "file1 file2" "Message".
  git add $1 && git commit -m "$2"
}

3

Sie können verwenden -a

git commit -h

...
Commit contents options
    -a, -all    commit all changed files
...

git commit -a # It will add all files and also will open your default text editor.

2

Ich hoffe das hilft jemandem und bitte zögern Sie nicht zu bearbeiten oder zu verbessern. Ich bin mir nicht sicher, was der schnellste Weg ist, aber dies vereinfacht meinen Code-Commit-Prozess durch die Verwendung von "ohmyzsh" für Git .

https://ohmyz.sh/

  • git add . wird auf verkürzt ga .
  • git commit -m "message" wird auf verkürzt gc -m "message"
  • git push wird auf verkürzt gp

Geben Sie hier die Bildbeschreibung ein


1

Ich verwende Folgendes (beide sind in Arbeit, daher werde ich versuchen, mich daran zu erinnern, dies zu aktualisieren):

# Add All and Commit
  aac = !echo "Enter commit message:" && read MSG && echo "" && echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"$MSG\" && echo "" && echo "New status:" && echo "===========" && git status

# Add All and Commit with bumpted Version number
  aacv = !echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"Bumped to version $(head -n 1 VERSION)\" && echo "" && echo "New status:" && echo "===========" && git status

Mit dem echo "Enter commit message:" && read MSGvon Sojan V Jose inspirierten Teil

Ich würde gerne eine if elseErklärung erhalten, damit ich von aacv gefragt werden kann, ob ich sie bereitstellen möchte, wenn dies erledigt ist, und dies für mich tun kann, wenn ich 'y' eingebe, aber ich denke, ich sollte das in meine .zshrcDatei aufnehmen


1

Ich verwende den folgenden Alias, um alle hinzuzufügen und festzuschreiben :

git config --global alias.ac '!git add -A && git commit -a'

Dann durch Eingabe von:

git ac

Ich erhalte ein VIM-Fenster, um weitere Bearbeitungswerkzeuge für meine Festschreibungsnachricht zu erhalten.


Ich sollte Sie wegen Plagiats verklagen. :)
Navid Vafaei

Bitte erläutern Sie die unterschiedlichen zusätzlichen Erkenntnisse, die Ihre Antwort im Vergleich zur deutlich älteren Antwort von Navid bietet.
Yunnosch

@Yunnosch Ich glaube, ich habe Navids Antwort vor dem Posten nicht gesehen, da er "zu faul" ist: P, um sie als vollständige Antwort zu posten. In der Tat ist es das gleiche, und tatsächlich habe ich diesen Alias ​​seit langer Zeit von einem Kollegen ausgeliehen. Ich denke, wir können das so nennen: Plagiatskette. Entschuldigung, wenn es dich gestört hat.
Gus

1

Für den Fall, dass jemand eine einzelne Datei "hinzufügen und festschreiben" möchte, was mein Fall war, habe ich das folgende Skript erstellt, um genau das zu tun:

#!/bin/bash

function usage {
    echo "Usage: $(basename $0) <filename> <commit_message>"    
}

function die {
    declare MSG="$@"
    echo -e "$0: Error: $MSG">&2
    exit 1
}

(( "$#" == 2 )) || die "Wrong arguments.\n\n$(usage)"

FILE=$1
COMMIT_MESSAGE=$2

[ -f $FILE ] || die "File $FILE does not exist"

echo -n adding $FILE to git...
git add $FILE || die "git add $FILE has failed."
echo done

echo "commiting $file to git..."
git commit -m "$COMMIT_MESSAGE" || die "git commit has failed."

exit 0

Ich habe es "gitfile.sh" genannt und es meinem $ PATH hinzugefügt. Dann kann ich git add ausführen und für eine einzelne Datei in einem Befehl festschreiben:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"

0

Ich benutze diesen Git-Alias:

git config --global alias.cam '!git commit -a -m '

Also, anstatt anzurufen

git add -A && git commit -m "this is a great commit"

Ich mache einfach:

git cam "this is a great commit"


0

Sie können git commit -am "[comment]" // beste Lösung oder git add verwenden. && git commit -m "[Kommentar]"


0

Überprüfen Sie zuerst, welche Aliase Sie haben ...

git config --get-regexp alias

Wenn es nicht vorhanden ist, können Sie Ihre eigenen erstellen (Referenz: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases )

// git hinzufügen

git config --global alias.a '!git add -A'

// git commit

git config --global alias.c '!git commit'

// git commit -m

git config --global alias.cm '!git commit -m'

// git add commit

git config --global alias.ac '!git add -A && git commit'

// git add commit -m

git config --global alias.acm '!git add -A && git commit -m'

Zum Beispiel, wenn Sie den letzten verwenden ...

git acm 'My commit'

0
  1. Erstellen Sie einen Alias ​​in Bash: alias gac="git add -A && git commit -m"

    (Ich habe beschlossen, die Verknüpfung "gac" zu nennen, aber Sie müssen nicht)

  2. Benutze es: gac 'your commit message here'


0

Für die silbernen Rücken in der Menge, die an Dinge wie Subversion gewöhnt sind ... um ein "Commit" im alten Sinne des Wortes zu machen (dh - oder in git speak - um in a hinzuzufügen, zu verpflichten und zu pushen) Einzelschritt Im Allgemeinen füge ich im Stammverzeichnis meines Projekts Folgendes hinzu (als Bat-Datei in Windows, z. B. git-commit.bat). Wenn ich dann hinzufügen, festschreiben und pushen möchte, tippe ich einfach so etwas ein git-commit "Added some new stuff"und alles geht an das Remote-Repo.

Auf diese Weise kann jeder im Projekt dasselbe verwenden, ohne lokal etwas ändern zu müssen.

Normalerweise git config credential.helper storeführe ich auch einmal aus, damit ich uid / pwd nicht angeben muss, wenn dies ausgeführt wird.

::
:: add, commit, and push to git
::

@echo off
echo.
echo.
echo 
echo Doing commit...
git add -A && git commit -m %1
echo.
echo.
echo Doing push...
git push
echo.
echo.
echo Done.
echo.

0

Dies funktioniert bei mir immer bitte folgende Befehle ausführen:

1.git add .
2.git commit -m "no bugs please"
3.git push origin *

Dabei steht * auf dem Zweig, zu dem Sie pushen, und Commit-Nachrichten können jederzeit an den Kontext angepasst werden.


-1
  1. tippen git add . && git commit -amund eingeben
  2. tippen historyund eingeben
  3. Merken Sie sich die Nummer für den obigen Befehl, sagen wir, die Nummer ist 543
  4. Von nun an für jeden Commit-Typ, !543 "your comment here"dh Ausrufezeichen + Nummer und ein Leerzeichen und Ihren Kommentar.

4
Ich habe abgestimmt, weil das eine wirklich seltsame Lösung ist, die Dinge auf schreckliche Weise kaputt machen kann, wenn Ihre Geschichte abläuft und der 543. Befehl zu etwas anderem wird.
Bfontaine


-4

Um es in einer Zeile zu halten, verwenden Sie:

gacm "your comment"

2
Könnten Sie möglicherweise Hintergrundinformationen zu diesem oder einem Link oder etwas geben?
Gershom

7
Ich denke, dieses Poster arbeitet mit Aliasnamen und merkt es nicht. Damit dies funktioniert, möchten Sie einen Shell-Alias ​​wie alias gacm="git add .; git commit -m"oder (vorzugsweise denke ich) einen Git-Alias ​​wie hinzufügen git config --global alias.gacm '!git add .;git commit -m'.
Bloße Entwicklung
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.