Zastanawiam się, jak podpisać (-s
) wyłączyć wcześniejsze zatwierdzenia, które zrobiłem w przeszłości w git?Git wypisać się z wcześniejszych zatwierdzeń?
Odpowiedz
Aby SIGNOFF poprzedni popełnić, należy zmienić opcję:
git commit --amend --signoff
Rozważenie podpisów modyfikuje komunikat zatwierdzenia, aby uzyskać ten wynik, należy użyć git filter-branch
.
git filter-branch --msg-filter \
"cat - && echo && echo 'Signed-off-by: Dan McGee <[email protected]>'" \
HEAD
(przykład z "git filter-branch
magic")
lub, w następstwie Curt J. Sampson „s suggestion, używając git interpret-trailers
:
git config trailer.sign.key "Signed-off-by"
git filter-branch --msg-filter \
"cat - && echo && git interpret-trailers --trailer 'sign: 'Signed-off-by: Dan McGee <[email protected]>'" \
HEAD
zastrzeżenie: spowoduje to zmianę SHA1 z istniejących zatwierdzeń, i być może będziesz zmuszony przeforsować wynik, co może być problematyczne, jeśli twoje zatwierdzenia są już udostępniane innym.
Warto rozważyć użycie 'git interpret-trailers' z' git filter-branch --msg-filter' zamiast dodawać ręcznie 'Signed-off-by:' lub inne przyczepy. Pozwoli to np. Uniknąć duplikowania zwiastunów. –
@ CurtJ.Sampson Tak! Dziękuję Ci. Dosłownie dokumentowałem to wczoraj: https://stackoverflow.com/a/41361273/6309. – VonC
@ CurtJ.Sampson Poprawiłem odpowiedź odpowiednio. – VonC
Spróbuj tego przerobić stare zobowiązuje się -S
:
git filter-branch -f --commit-filter 'git commit-tree -S "[email protected]"' HEAD
Po tym, musisz git push -f
. Ale bądź ostrożny, identyfikatory commitów ulegną zmianie, a inne osoby stracą zsynchronizowanie.
To spowoduje wylogowanie wszystkich zatwierdzeń, prawda? Jak mogę wylogować tylko ostatnie zatwierdzenia X? –
@ ÁkosVandra jeśli wciąż szukasz odpowiedzi: '' git filter-branch -f --commit-filter 'git commit-tree -S "$ @"' HEAD ~ X..HEAD'', gdzie X to liczba ostatnich X zatwierdzeń. na przykład dla ostatnich 2 zatwierdzeń: '' git filter-branch -f --commit-filter 'git commit-tree -S "$ @"' HEAD ~ 2..HEAD'' –
Dla mnie po prostu poprawka signof, w rzeczywistości nie weryfikuję moich commitów na githubie.
Rozwiązanie, które przerabia dla mnie wraca, a następnie podpisać każdy popełnić z -S
git commit --amend -S
także, jeśli sprawdzeniu jeśli popełnić jest właściwie podpisane, a swój e-mail/nazwa nie jest po prostu dołączane, użyj tego polecenia
git show HEAD --show-signature
Extra wskazówka: Jeśli już zmieniającej swoje zobowiązuje, możesz swoje prawdziwe nazwisko w nich (patrz Korzystanie git log
). Być może używasz swojej nazwy rączki github, która nie jest potrzebna. Wymagana jest tylko poprawna wiadomość e-mail, aw polu nazwa użytkownika należy podać swoje pełne imię i nazwisko, a github będzie je poprawnie śledzić z nazwą posiadanego githubu. Tak aby poprawić swoją nazwę użytkownika i podpisać ostatni popełnić zastosowanie:
git commit --amend --author="FULL NAME <email>" -S
a także ustawić pełną nazwę dla nazwy użytkownika w przyszłości przez
git config --global user.name "FULL NAME"
miałem podobny problem. Tutaj, dzięki Robin Johnson z Gentoo Linux to podstęp, aby dodać podpis do wszystkich moich poprzednich unpushed zobowiązuje:
$ git pull && git rebase --gpg-sign --force-rebase origin/master && git push --signed
Already up-to-date.
Current branch master is up to date, rebase forced.
First, rewinding head to replay your work on top of it...
Applying: sci-biology/KING: new package
Applying: dev-lang/yaggo: version bump, fix install procedure
Applying: sci-libs/htslib: version bump
Applying: sci-biology/bcftools: version bump
Applying: sci-biology/samtools: version bump
Applying: sci-biology/libBigWig: new release with io.h renamed to bigWigIO.h
Applying: sci-biology/MaSuRCA: add more URLs to HOMEPAGE
Applying: sci-biology/SPAdes: update comments on bundled dev-libs/boost
Applying: sci-biology/khmer: added a comment how to proceed with src_compile()
Applying: sci-biology/picard: version bump
Applying: sci-biology/ruffus: pint EGIT_REPO_URI to the archive URL of code.google.com
Applying: sci-biology/vcftools: the 0.1.15_pre release was just renamed to 0.1.15 by upstream
Applying: sci-biology/nanopolish: new package
Applying: sci-biology/libBigWig: version bump
Counting objects: 75, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (75/75), done.
Writing objects: 100% (75/75), 14.51 KiB | 0 bytes/s, done.
Total 75 (delta 55), reused 0 (delta 0)
remote: To github.com:gentoo/sci.git
remote: 29c5e3f5d..b37457700 master -> master
To git+ssh://git.gentoo.org/proj/sci.git
29c5e3f5d..b37457700 master -> master
$
wyboru http://schacon.github.com/git/git-commit.html –
możliwym duplikatu z http://stackoverflow.com/questions/1962094/what-is-the-sign-off-feature-in-git-for –
Zastanawiam się, czy to nie jest ironicznie niebezpieczne, aby to zrobić. Podpisując mniej więcej, powiedz "Zgadzam się, że poprzednie zatwierdzenia są bezpieczne".Ale jeśli sklonowałeś je, itd., A nie wykonujesz prawdziwego sprawdzenia, oznacza to coś, czego nie możesz sprawdzić. Wyobraźcie sobie hakera w jakiś sposób manipulującego zatwierdzeniem. Podpisanie jednak faktycznie uniemożliwia ingerencję w zatwierdzenie na późniejszym etapie. Ale może powinieneś dodać to do wiadomości? –