Jak mogę ustawić i zatwierdzić wszystkie pliki, w tym nowo dodane pliki, za pomocą jednego polecenia?
Jak mogę ustawić i zatwierdzić wszystkie pliki, w tym nowo dodane pliki, za pomocą jednego polecenia?
Odpowiedzi:
Robi
git add -A && git commit -m "Your Message"
liczyć się jako „pojedyncze polecenie”?
Edytuj na podstawie poniższej odpowiedzi @ thefinnomenon :
Aby mieć to jako git alias, użyj:
git config --global alias.coa '!git add -A && git commit -m'
i zatwierdzaj wszystkie pliki, w tym nowe pliki, za pomocą wiadomości zawierającej:
git coa "A bunch of horrible changes"
Objaśnienie (z git adddokumentacji ):
-A, --all, --no-ignore-remove
Zaktualizuj indeks nie tylko tam, gdzie drzewo robocze ma pasujący plik, ale także tam, gdzie indeks ma już wpis. To dodaje, modyfikuje i usuwa wpisy indeksu, aby pasowały do drzewa roboczego.
Jeśli nie
<pathspec>podano nie, gdy użyto opcji -A, wszystkie pliki w całym drzewie roboczym są aktualizowane (stare wersje Git służyły do ograniczania aktualizacji do bieżącego katalogu i jego podkatalogów).
git add -A ; git commit -m "Your Message"
To polecenie doda i zatwierdzi wszystkie zmodyfikowane pliki, ale nie nowo utworzone pliki .
git commit -am "<commit message>"
Od man 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.
Korzystam z tej funkcji:
gcaa() { git add --all && git commit -m "$*" }
W moim pliku konfiguracyjnym zsh, więc mogę po prostu:
> gcaa This is the commit message
Aby automatycznie wykonać etap i zatwierdzić wszystkie pliki.
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"ale to jest o wiele ładniejsze ... <pospiesz się, by zmienić bashrc ..>
Jednowierszowy, aby wyeksponować WSZYSTKIE pliki ( zmodyfikowane , usunięte i nowe ) i zatwierdzić z komentarzem:
git add --all && git commit -m "comment"
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
Nie jestem pewien, dlaczego wszystkie te odpowiedzi tańczą wokół tego, co uważam za właściwe rozwiązanie, ale do tego, co jest tutaj warte, używam:
git config --global alias.coa '!git add -A && git commit -m'
git coa "A bunch of horrible changes"
UWAGA: coajest skrótem od zatwierdzenia wszystkich i można go zastąpić czymkolwiek, czego dusza zapragnie
git aliasdrogi, reszta jest nudna.
Zatwierdzanie w git może być procesem wieloetapowym lub jednym krokiem, w zależności od sytuacji.
W tej sytuacji zaktualizowano wiele plików i chcesz zatwierdzić:
Musisz dodać wszystkie zmodyfikowane pliki przed dokonaniem czegokolwiek.
git add -A
lub
git add --all
Następnie możesz użyć zatwierdzenia wszystkich dodanych plików
git commit
z tym musisz dodać wiadomość dla tego zatwierdzenia.
Jeśli chcesz po prostu „szybkiego i brudnego” sposobu ukrywania zmian w bieżącej gałęzi, możesz użyć następującego aliasu:
git config --global alias.temp '!git add -A && git commit -m "Temp"'
Po uruchomieniu tego polecenia możesz po prostu wpisać, git tempaby git automatycznie zatwierdzał wszystkie zmiany w bieżącej gałęzi jako zatwierdzenie o nazwie „Temp”. Następnie możesz użyć git reset HEAD~później, aby „odrzucić” zmiany, aby kontynuować ich pracę lub git commit --amenddodać więcej zmian do zatwierdzenia i / lub nadać mu odpowiednią nazwę.
Mam w swojej konfiguracji dwa aliasy:
alias.foo=commit -a -m 'none'
alias.coa=commit -a -m
jeśli jestem zbyt leniwy, po prostu zatwierdzam wszystkie zmiany
git foo
i po prostu zrobić szybkie zatwierdzenie
git coa "my changes are..."
coa oznacza „popełnij wszystko”
Uruchom podane polecenie
git add . && git commit -m "Changes Committed"
Jednak nawet jeśli wydaje się to pojedynczym poleceniem, to dwa osobne polecenia są uruchamiane jeden po drugim. Tutaj po prostu &&je łączyliśmy. Nie różni się niczym od biegania
git add .i git commit -m "Changes Committed"osobno. Możesz uruchamiać wiele poleceń razem, ale sekwencja ma tutaj znaczenie. Jeśli chcesz przesłać zmiany na zdalny serwer wraz z przemieszczaniem i zatwierdzeniem, możesz to zrobić, jak podano,
git add . && git commit -m "Changes Committed" && git push origin master
Zamiast tego, jeśli zmienisz sekwencję i umieścisz na pushpierwszym miejscu, zostanie ona wykonana jako pierwsza i nie da pożądanego popchnięcia po przemieszczeniu i zatwierdzenia tylko dlatego, że już działała jako pierwsza.
&&uruchamia drugie polecenie w wierszu, gdy pierwsza komenda wraca pomyślnie, lub z poziomu błędu 0. przeciwieństwem &&Is ||, który prowadzi drugą komendę, gdy pierwsza komenda nie powiedzie, lub z poziomu błędu 1.
Alternatywnie możesz utworzyć alise as git config --global alias.addcommit '!git add -a && git commit -m'i użyć go jakogit addcommit -m "Added and commited new files"
Świetne odpowiedzi, ale jeśli szukasz pojedynczej linii, zrób wszystko, możesz połączyć, alias i cieszyć się wygodą:
git add * && git commit -am "<commit message>"
Jest to pojedynczy wiersz, ale dwa polecenia i, jak wspomniano, możesz aliasować te polecenia:
alias git-aac="git add * && git commit -am " (spacja na końcu jest ważna), ponieważ sparametryzujesz nowe polecenie krótkiej ręki.
Od tego momentu będziesz używać tego aliasu:
git-acc "<commit message>"
Zasadniczo mówisz:
git, dodaj dla mnie wszystkie nieśledzone pliki i zatwierdź je za pomocą podanego komunikatu zatwierdzenia.
Mam nadzieję, że używasz Linuksa, mam nadzieję, że to pomoże.
Możesz napisać mały skrypt (spójrz na odpowiedź Iana Clellanda), git-commitallktóry używa kilku poleceń git do wykonania tego, co chcesz zrobić.
Umieść ten skrypt w dowolnym miejscu w swoim $PATH. Możesz to nazwać git commitall... bardzo przydatnym!
Znaleziono tutaj (pytanie i wszystkie odpowiedzi niestety usunięte, widoczne tylko przy wysokiej reputacji)