Git ma teraz możliwość podpisywania zatwierdzeń git commit -S
, co jest świetne, ale czasami zapominam flagę commit
, a czasami wysyłam sobie łatki, które stosuję am
, a to polecenie nie ma flagi do podpisywania.
Czy istnieje sposób na dodanie podpisu do już zarejestrowanego zatwierdzenia?
git config commit.gpgsign true
.Odpowiedzi:
Dodaj następujący wiersz po każdym zatwierdzeniu, które chcesz podpisać
exec git commit --amend --no-edit -S
Uruchomi to polecenie po wybraniu każdego zatwierdzenia.
AKTUALIZACJA:
Łatwiejszym sposobem na to jest:
Spowoduje to zmianę wszystkiego do momentu opracowania (lub dowolnego skrótu) i nie musisz kopiować wklejania po każdym zatwierdzeniu.
źródło
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
staje sięgit resign HASH
git commit --amend --no-edit -n -S
.git push --force
?Podpisanie zatwierdzenia zmienia jego zawartość, więc nowsze zatwierdzenia w zależności od niego zmienią ich skrót.
Jeśli chcesz tylko podpisać ostatnie zatwierdzenie,
git commit -S --amend
zadziała.źródło
Używam
git rebase -i --root
(patrz Historia przepisywania ) i zmieniampick
naedit
.Następnie używam
git commit -S --amend --no-edit && git rebase --continue
(w systemie Windows) dla każdego zatwierdzenia.źródło
Natknąłem się również na ten sam problem i oto moje rozwiązanie:
spowoduje to podpisanie wszystkich moich zatwierdzeń od pierwszego początkowego zatwierdzenia, a także obejście haka zatwierdzania, który ustawiłem za pomocą husky . Nie trzeba zmieniać
pick
naedit
.źródło
Jeśli chcesz filtrować tylko określone zatwierdzenia i podpisywać tylko je, możesz użyć
filter-branch
:Jest to przydatne, jeśli z jakiegoś powodu chcesz podpisywać tylko własne zatwierdzenia.
źródło
Jeśli musisz podpisać GPG, wszystkie zatwierdzenia SINCE od konkretnego zatwierdzenia w bieżącym oddziale, możesz użyć następujących poleceń:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
Gdzie
<COMMIT>
jest identyfikator zatwierdzenia (npabc123e5
.).Ma to tę dodatkową zaletę, że nie zakłóca metadanych zatwierdzenia (w tym daty zatwierdzenia).
Jeśli chcesz zrezygnować z monitu o podanie hasła GPG przy każdym zatwierdzeniu, zapoznaj się również z odpowiedzią: https://askubuntu.com/a/805550
UWAGA: Przełączenie z
gpg
na wgpg2
celu podpisywania GIT będzie wymagało ponownego zaimportowania klucza prywatnego w GPG 2.źródło