Dodaj i zatwierdź jednym poleceniem

392

Czy mogę to jakoś zrobić

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

jednym poleceniem?

Wydaje mi się, że często wykonuję te dwa polecenia, a gdyby Git miał taką opcję git commit -Am "commit message", uczyniłoby to życie o wiele wygodniejszym.

git commitma -amodyfikator, ale nie robi to tak samo jak git add -Aprzed zatwierdzeniem . git add -Adodaje nowo utworzone pliki, ale git commit -amnie robi tego. Co robi?

Chetan
źródło
4
możliwy duplikat Git Commit wszystkie pliki za pomocą pojedynczego polecenia cmd
Mr_and_Mrs_D 24.09.2013
1
oszczędność czasu i zatwierdzanie każdej zmiany jest lepsze, więc używam git commit -am"yes the code in committed"
Rizo
git add .jest szybszą opcją dodawania wszystkich
Ryan

Odpowiedzi:

419

Możesz użyć aliasów git, np

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

i używaj go z

git add-commit -m 'My commit message'

EDYCJA: Cofnięto z powrotem do tików ('), ponieważ inaczej nie powiedzie się to przy rozszerzaniu powłoki w systemie Linux. W systemie Windows zamiast tego należy użyć podwójnych cudzysłowów („) (wskazanych w komentarzach, nie zweryfikowano).

Martin C.
źródło
24
Użyj, git config --global --unset alias.<your_alias>aby rozbroić alias.
TMOTTM
11
@MrFusion Sprawia, że ​​polecenie jest poleceniem powłoki zewnętrznej zamiast skrótu do wewnętrznego polecenia git, co oznacza, że ​​cała linia jest wykonywana jako osobny proces.
Martin C.
8
Wolę, git config --global alias.add-commit '!git add -A && git commit -m'więc nie muszę za -mkażdym razem pisać .
incandescentman
21
Jestem zbyt leniwy, aby za każdym razem wpisywać „add-commit” i „-m”. W związku z tym piszę: git config --global alias.ac '!git add -A && git commit -m' raz i za każdym razem piszę: git ac 'comment' :)
Navid Vafaei
5
git config --global alias.add-commit "!git add -A && git commit"(tzn. podwójne cudzysłowy zamiast pojedynczych cudzysłowów) działa w systemie Windows.
Saheed
269
git commit -am "message"

jest łatwym sposobem powiedzenia gitowi usunięcia usuniętych plików, ale generalnie nie polecam takich przepływów pracy typu catch-all. Zgodnie z najlepszą praktyką, polecenia Git powinny być dość atomowe i wpływać tylko na kilka plików.

git add .
git commit -m "message"

to prosty sposób na dodanie wszystkich nowych lub zmodyfikowanych plików. Obowiązuje również kwalifikacja typu catch-all. Powyższe polecenia nie usuwają plików usuniętych bez git rmpolecenia.

git add app
git commit -m "message"

to prosty sposób na dodanie wszystkich plików do indeksu z jednego katalogu, w tym przypadku katalogu app.

Jed Schneider
źródło
41
lub po prostu git commit -am "message"- upewnij się, że nie ma nowych plików, których git jeszcze nie odebrał. w przeciwnym razie musisz użyć git add . &&przed tym .... aby zrobić to w jednym wierszu.
courtimas
2
Przykro nam, ale pierwotne pytanie dotyczyło dokładnie tego - unikając git add .w przypadku dodania plików
gorn
50

Aby utrzymać go w jednej linii, użyj:

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

Ta linia doda i zatwierdzi wszystkie zmienione i dodane pliki do repozytorium.

Ale
źródło
12
Należy zauważyć, że jest to specyficzne dla powłoki Linux (bash i ewentualnie inne).
R. Martinho Fernandes,
6
git commit -am "comment"jest idealny
Abhishek Bedi
2
Jeśli użyłeś: git add . to nie musisz używać opcji -a , po prostu potrzebujesz:git commit -m "comment"
Duc Chi
18

Po prostu połącz swoje polecenia:

git add -A && git commit -m "comment" 
Yarin
źródło
18

Tylko dostosowanie Ales męska odpowiedzi, a courtsimas męska komentarz dla linux bash :

Aby utrzymać go w jednej linii, użyj:

git commit -am "comment"

Ta linia doda i zatwierdzi wszystkie zmienione w repozytorium.

Tylko upewnij się, że nie ma nowych plików, których git jeszcze nie odebrał. w przeciwnym razie będziesz musiał użyć:

git add . ; git commit -am "message"

Danilo
źródło
Jak to zrobić git commit -am "comment", ale tylko dla 1 pliku? Powiedzmy, że plik.txt .
Santosh Kumar,
git commit -am "comment"to skrót do dodawania i zatwierdzania wszystkich zmienionych plików. Jeśli chcesz dodać i zatwierdzić tylko 1 plik, musisz wykonać:git add file.txt ; git commit -m "comment"
danilo
W drugim przypadku nie ma potrzeby dodawania -a do m. Powinien to być git add. ; Git commit -m „message”
Manish Bansal
12

W późniejszej wersji git możesz dodawać i zatwierdzać w ten sposób

git commit -a -m "commit message"

Dodatkowo masz pseudonim:

[alias]
    ac = commit -a -m

Następnie możesz użyć tego w następujący sposób:

git ac "commit message"
Sirwinny
źródło
6
To polecenie nie zatwierdza nowych plików, tylko zaktualizowane.
ruvim
11

Na moim komputerze z systemem Windows skonfigurowałem ten .bashrcalias, aby uprościć cały proces.

  • utwórz / zlokalizuj swój .bashrc- odsyłaj do wątku SO
  • dodaj następujący wiersz do pliku

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

    dodaje git i zatwierdza i wypycha. popraw go w jakikolwiek sposób, powiedz, że nie chcesz, aby polecenie push usunęło tę część

  • przeładuj .bashrc/ zamknij i ponownie otwórz swoją powłokę

  • teraz możesz wykonać cały proces za pomocą gacppolecenia.
Sojan V Jose
źródło
Do waszej dyspozycji jest ten skrypt git push. Nie kopiuj i nie wklejaj tego.
Yar
11

całkiem pewne, że możesz użyć:

git commit -am "commit all the things"
Blair Anderson
źródło
1
To polecenie jest najkrótszym i prawdopodobnie najłatwiejszym sposobem na osiągnięcie wymaganego rezultatu. Test na git w wersji 2.6.3. Windows.1.
Ithar
5
Nie spowoduje to zatwierdzenia nowo dodanych plików, tylko te „zaktualizowane”!
user13107
1
PRAWIDŁOWO, nie rozpocznie śledzenia plików, które nie są śledzone
Blair Anderson
@BlairAnderson - Czy istnieje polecenie dodawania nieśledzonych plików również za pomocą funkcji dodawania i zatwierdzania?
MasterJoe2
6

Jeśli wpiszesz:

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

raz będziesz musiał tylko wpisać

git a

każdego razu:

git a 'your comment'
Navid Vafaei
źródło
4
powinna to być najlepsza odpowiedź, bardzo łatwa i zawiera NIEŚLEDZONE pliki, w przeciwieństwie do większości innych sugestii.
JesseBoyd,
6

Po prostu użyj:

git commit -m "message" .     

Zwróć uwagę na „.” na końcu ... która może być również ścieżką do pliku / katalogu

Josh Olson
źródło
czy to zadziała w przypadku nowo utworzonych plików lub tylko istniejących, które zostały zmienione?
MasterJoe2
5

Robię muszelkę

#!/bin/sh

clear

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

zapisz na przykład git.sh i później zadzwoń:

sh git.sh your commit message
ademar111190
źródło
1
nieprzenośny na inne systemy operacyjne, a git może to zrobić sam, więc o co chodzi?
naught101
2
@ naught101 jest oczywiste, że git może to zrobić sam, chodzi o to, że ta powłoka służy do usprawnienia procesu dla osób używających git na Linuksie, ponieważ znacznie łatwiej jest uruchomić sh git.sh twoją wiadomość zatwierdzenia, a nie być przenośnym nie oznacza, że ​​będzie działać poprawnie.
ademar111190
5

Mam tę funkcję w moim .bash_profilealbo .profilealbo .zprofilealbo cokolwiek dostaje pozyskiwane w muszli logowanie:

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"
}
Lenar Hoyt
źródło
3

Możesz użyć -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.
Druta Ruslan
źródło
2

Mam nadzieję, że to komuś pomoże i nie krępuj się edytować lub ulepszać. Nie jestem pewien, jaki jest najszybszy sposób, ale z pewnością upraszcza mój proces zatwierdzania kodu, używając „ohmyzsh” dla Git .

https://ohmyz.sh/

  • git add . jest skrócony do ga .
  • git commit -m "message" jest skrócony do gc -m "message"
  • git push jest skrócony do gp

wprowadź opis zdjęcia tutaj

dhahn
źródło
1

Używam następujących (oba są w toku, więc postaram się pamiętać, aby to zaktualizować):

# 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

Z echo "Enter commit message:" && read MSGczęścią inspirowaną przez Sojana V Jose

Chciałbym dostać tam if elseoświadczenie, aby poprosić aacv, aby zapytał mnie, czy chcę wdrożyć, kiedy to się skończy, i zrobi to dla mnie, jeśli wpiszę „y”, ale myślę, że powinienem umieścić to w moim .zshrcpliku

avjaarsveld
źródło
1

Używam następującego aliasu do dodawania wszystkich i zatwierdzania :

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

Następnie, wpisując:

git ac

Dostaję okno vima, aby uzyskać więcej narzędzi do edycji mojej wiadomości zatwierdzenia.

Gus
źródło
Powinienem cię pozwać za plagiat. :)
Navid Vafaei,
Wyjaśnij różne dodatkowe wgląd, jaki zapewnia twoja odpowiedź w porównaniu ze znacznie starszą odpowiedzią Navid.
Yunnosch
@Yunnosch Chyba nie widziałem odpowiedzi Navida przed wysłaniem, ponieważ jest on „zbyt leniwy”: P, aby opublikować ją jako pełną odpowiedź. Rzeczywiście, jest tak samo i właściwie mam ten pseudonim od dawna, pożyczyłem go od współpracownika. Myślę, że możemy to nazwać: łańcuchem plagiatu. Przepraszam, jeśli ci to przeszkadzało.
Gus
1

W przypadku, gdy ktoś chciałby „dodać i zatwierdzić” dla jednego pliku, co było moim przypadkiem, stworzyłem poniższy skrypt, aby to zrobić:

#!/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

Nazwałem go „gitfile.sh” i dodałem do mojej $ PATH. Następnie mogę uruchomić git add i commit dla jednego pliku w jednym poleceniu:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"
Bruno Negrão Zica
źródło
0

Używam tego aliasu git:

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

Zamiast dzwonić

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

Po prostu robię:

git cam "this is a great commit"

Alejandro Silva
źródło
0

możesz użyć git commit -am "[komentarz]" // najlepsze rozwiązanie lub git add. && git commit -m „[komentarz]”

Gaurav Rathi
źródło
0

Najpierw sprawdź, jakie masz aliasy ...

git config --get-regexp alias

Jeśli go nie ma, możesz stworzyć własny (odniesienie: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases )

// git add

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 dodaj zatwierdzenie

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

// git dodaj zatwierdzenie -m

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

Na przykład, jeśli użyjesz ostatniego ...

git acm 'My commit'
Cruz Jurado
źródło
0
  1. Utwórz alias w bash: alias gac="git add -A && git commit -m"

    (Zdecydowałem się nazywać skrót „gac”, ale nie musisz)

  2. Użyj tego: gac 'your commit message here'

H. Almidan
źródło
0

Dla srebrnych pleców w tłumie, które są przyzwyczajone do takich rzeczy jak Subversion ... zrobić „zatwierdzenie” w starym znaczeniu tego słowa (tj. - lub git speak - aby dodać, zatwierdzić i pchnąć) w pojedynczy krok Generalnie dodaję coś takiego jak poniżej w katalogu głównym mojego projektu (jako plik nietoperza w systemie Windows, np. git-commit.bat). Potem, gdy chcę dodać, zatwierdzić i wypchnąć, po prostu wpisuję coś takiegogit-commit "Added some new stuff" i wszystko przechodzi do zdalnego repozytorium.

Ponadto w ten sposób każdy w projekcie może używać tego samego bez konieczności zmiany czegokolwiek lokalnie.

Zwykle też uruchamiam git config credential.helper storeraz, więc nie muszę podawać identyfikatora UID / PWD, gdy jest uruchamiany.

::
:: 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.
Jan
źródło
0

To działa dla mnie zawsze proszę uruchomić następujące polecenia:

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

gdzie * jest oparty na gałęzi, do której naciskasz, a także komunikaty zatwierdzenia można zawsze zmienić w celu dopasowania do kontekstu.

Fredrick Okereke
źródło
-1
  1. wpisz git add . && git commit -ami wpisz
  2. wpisz historyi wpisz
  3. zapamiętaj numer powyższego polecenia, powiedzmy, że jest to numer 543
  4. Odtąd dla każdego typu zatwierdzenia, !543 "your comment here"tj. Wykrzyknika + numeru oraz spacji i komentarza.
Kosmos Nagios
źródło
4
Odrzuciłem głos, ponieważ to naprawdę dziwne rozwiązanie, które może zepsuć wszystko w okropny sposób, gdy skończy się twoja historia, a 543. polecenie stanie się czymś innym.
bfontaine
-2

Ten wynik - spróbuj tego: Proste polecenie w skrypcie dla git add, git commit i git push

Otwórz CMD w systemie Windows i wklej tę odpowiedź

git commit -m "your message" . && git push origin master

Ten przykład mojego zrzutu ekranu: https://i.stack.imgur.com/2IZDe.jpg

Anang Hanafi
źródło
-4

Aby utrzymać go w jednej linii, użyj:

gacm "your comment"
Savish Ravula
źródło
2
Czy mógłbyś podać jakieś informacje na ten temat, link lub coś takiego?
Gershom
7
Myślę, że ten plakat działa z aliasami i nie zdaje sobie z tego sprawy. Aby powyższe działało, chciałbyś dodać alias powłoki jak alias gacm="git add .; git commit -m"lub (najlepiej myślę) alias git jak git config --global alias.gacm '!git add .;git commit -m'.
Mere Development,