2012-10-24 14 views
31

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ń?

+0

wyboru http://schacon.github.com/git/git-commit.html –

+0

możliwym duplikatu z http://stackoverflow.com/questions/1962094/what-is-the-sign-off-feature-in-git-for –

+1

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? –

Odpowiedz

46

Aby SIGNOFF poprzedni popełnić, należy zmienić opcję:

git commit --amend --signoff

6

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.

+0

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. –

+0

@ CurtJ.Sampson Tak! Dziękuję Ci. Dosłownie dokumentowałem to wczoraj: https://stackoverflow.com/a/41361273/6309. – VonC

+0

@ CurtJ.Sampson Poprawiłem odpowiedź odpowiednio. – VonC

10

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.

+1

To spowoduje wylogowanie wszystkich zatwierdzeń, prawda? Jak mogę wylogować tylko ostatnie zatwierdzenia X? –

+5

@ Á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'' –

1

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" 
2

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 
$ 
Powiązane problemy