Git이 이전 커밋을 승인 하시겠습니까?
-s
이전에 git에서 만든 이전 커밋 에 서명 ( ) 하는 방법이 궁금합니다 .
이전 커밋을 사인 오프하려면 amend 옵션을 사용합니다.
git commit --amend --signoff
편집 : 수정은 최신 커밋 만 사인 오프합니다. 사인 오프 여러 커밋에, filter-branch
그리고 interpret-trailers
로는 제안 vonc 등. al. 사용되어야한다. 여기에 저에게 효과적이었습니다.
먼저 토큰 sign
을 Signed-off-by
. 이 작업은 한 번만 수행해야하며 다음 단계에서 필요합니다.
git config trailer.sign.key "Signed-off-by"
git filter-branch
스위치 --msg-filter
가 있는 명령 은 각 커밋에 대해 한 번씩 필터를 평가합니다. 필터는 stdin에서 커밋 메시지를 수신하고 stdout에서 출력하는 모든 쉘 명령 일 수 있습니다. 고유 한 필터를 작성하거나 git interpret-trailers
indepotent 인을 사용할 수 있습니다 . 다음은 현재 사용자와 이메일을 사용하여 현재 분기의 최근 두 커밋을 사인 오프하는 예입니다.
export SIGNOFF="sign: $(git config --get user.name) <$(git config --get user.email)>"
git filter-branch -f --msg-filter \
"git interpret-trailers --trailer \"$SIGNOFF\"" \
HEAD~2..HEAD
참고 1) 커밋 메시지를 수정하면 커밋 ID가 변경됩니다. 즉, 이미 게시 된 브랜치에 대한 푸시는 --force-with-lease--force
또는 더 나은 방법 으로 강제해야 함을 의미합니다 .
참고 2) 사용자 정의 스크립트를 작성하려는 경우 git filter-branch
현재 디렉토리를 <repo>/.git-rewrite/t
. 스크립트에 대한 상대 경로를 사용하는 것은 일반적으로 작동하지 않습니다. 대신 스크립트가 사용자에 $PATH
있거나 절대 경로로 제공 되어야합니다 .
다음을 사용하여 이전 커밋을 다시 실행하십시오 -S
.
git filter-branch -f --commit-filter 'git commit-tree -S "$@"' HEAD
그 후에 git push -f
. 그러나 조심하십시오. 커밋 ID가 변경되고 다른 사람들이 동기화되지 않습니다.
사인 오프를 고려하여 커밋 메시지를 수정하고 git filter-branch
이를 달성하기 위해 사용합니다.
git filter-branch --msg-filter \
"cat - && echo && echo 'Signed-off-by: Dan McGee <email@example.com>'" \
HEAD
( " git filter-branch
magic "의 예 )
또는 Curt J. Sampson 의 제안에 따라 다음 을 사용합니다 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@example.com>'" \
HEAD
주의 사항 : 이것은 기존 커밋의 SHA1을 변경하고 결과를 강제로 푸시해야 할 수 있습니다. 커밋을 이미 다른 사람이 공유 한 경우 문제가 될 수 있습니다.
git 버전 2.20.1을 사용하여
Signed-off-by
에서 " " 를 생략--trailer 'sign:
하고 다음과 같이 수행해야합니다.
git filter-branch --msg-filter \
"cat - && echo && git interpret-trailers --trailer 'sign: Michael Vorburger <vorburger@redhat.com>'" \
HEAD
나를 위해 단지 서명을 수정했지만 실제로 github에서 내 커밋을 확인하지 않았습니다.
나를 위해 일한 솔루션은 돌아가서 각 커밋에 서명하는 것입니다. -S
git commit --amend -S
또한 커밋이 실제로 서명되었는지 확인하고 이메일 / 이름이 단순히 추가되지 않은 경우이 명령을 사용하십시오.
git show HEAD --show-signature
추가 팁 : 이미 커밋을 수정하고 있다면 실제 이름을 원할 수 있습니다 (사용 참조 git log
). 필요하지 않은 github 핸들 이름을 사용하고있을 수 있습니다. 올바른 이메일 만 필요하며 사용자 이름 필드에는 전체 이름을 사용해야하며 github는 github 핸들 이름으로 올바르게 추적합니다. 따라서 사용자 이름을 수정하고 마지막 커밋에 서명하려면 다음을 사용하십시오.
git commit --amend --author="FULL NAME <email>" -S
또한 나중에 사용자 이름에 대한 전체 이름을 설정합니다.
git config --global user.name "FULL NAME"
비슷한 문제가있었습니다. Gentoo Linux의 Robin Johnson 덕분에 이전의 모든 푸시되지 않은 커밋에 서명을 추가 할 수 있습니다.
$ 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
$
참조 URL : https://stackoverflow.com/questions/13043357/git-sign-off-previous-commits
'code' 카테고리의 다른 글
콘솔 애플리케이션의 실행 디렉토리를 얻는 방법 (0) | 2021.01.06 |
---|---|
Main에서 비동기 메서드를 어떻게 호출 할 수 있습니까? (0) | 2021.01.06 |
자바 : int [] 배열 대 int 배열 [] (0) | 2021.01.06 |
NotNull 또는 Nullable 가져 오기 및 Android Studio가 컴파일되지 않음 (0) | 2021.01.06 |
mysqli_real_connect () : (HY000 / 2002) : 해당 파일 또는 디렉토리 없음 (0) | 2021.01.06 |