GPG 제출에 git로 서명하는 것을 잊었을 때

7970 단어 Gittech

배경.


나는 가능한 한 개발 상황에서 GPG 서명이 있는 것을 제출했지만 자신의 새로운 PC 환경과 원격 서버에서 직접 개발하고 제출할 때 GPG 설정을 잊어버리면 개발된 프로그램이 멈추는 것을 매우 싫어한다.
그럼 이번엔 앞으로도 추가 서명이 가능한 제출 편집 방법을 소개한다.

TL;DR

  • git rebase -i {ターゲットの一つ手前のコミットID}
  • 편집기가 1에서 지정한 디버그 ID까지의 역사를 일람표로 상승하기 때문에 GPG 서명을 추가하려는 대상의 제출(또는 여러 개) 명령을 pick에서 edit로 변경하고 저장
  • git commit --amend --no-edit -S
  • git rebase --continue
  • 서명 확인


    우선 서명이 확인됐는지 확인해 보자.
    명령은 git log --show-signature를 통해 확인할 수 있다.
    kazuaki@yeezy:~/fun/zenn.dev$ git log --show-signature
    commit 63b4a857462ee7f29eb81fc2118a5e9acd831138 (HEAD -> master)
    Author: Kazuaki Ishiguro <[email protected]>
    Date:   Sun Oct 17 21:01:49 2021 +0900
    
        added zenn-cli
    
    commit f41e5df5c31db4b3df7561447242038c0b677ea8 (origin/master)
    gpg: Signature made Mon 06 Sep 2021 10:19:01 AM JST
    gpg:                using EDDSA key ...BECD98A8A99831
    gpg: Good signature from "Kazuaki Ishiguro <[email protected]>" [ultimate]
    Author: Kazuaki Ishiguro <[email protected]>
    Date:   Mon Sep 6 10:19:01 2021 +0900
    
        Initial setup
    
    상기 일지에서 제출 ID63b4a857462ee7f29eb81fc2118a5e9acd831138는 Author와 Date 및 제출 정보만 기재하고 제출 IDf41e5df5c31db4b3df7561447242038c0b677ea8는 gpg의 서명 정보를 기재했으며 최근 제출에는 서명이 없음을 확인했다.

    편집 커밋


    그럼 우리 빨리 커미션을 편집합시다.

    목표 지정


    사용된 명령은 git rebase입니다.git rebase에서 커밋을 편집하려면 대상 커밋 ID를 지정해야 하는 이전 커밋이 필요합니다.
    이번 예는 지정해야 한다f41e5df5c31db4b3df7561447242038c0b677ea8.
    kazuaki@yeezy:~/fun/zenn.dev$ git rebase -i f41e5df5c31db4b3df7561447242038c0b677ea8
    
    # 以下エディタ内での表示
    
    pick 63b4a85 added zenn-cli
    
    # Rebase f41e5df..63b4a85 onto f41e5df (1 command)
    #
    # Commands:
    ......
    
    rebase의 행동에 대해 더 자세히 알고 싶으신 분들은 공식 문서를 참고하시기 바랍니다.
  • git rebase
  • 편집하려는 커밋 ID 왼쪽에 있는 명령을 변경하고(pick->edit) 저장


    상술한 예는 아래와 같다.
    # 以下エディタ内での表示
    
    edit 63b4a85 added zenn-cli
    
    # Rebase f41e5df..63b4a85 onto f41e5df (1 command)
    #
    # Commands:
    
    상기 상태에서 저장할 때 편집기가 끝나고 터미널 화면으로 돌아간다.
    돌아오면 다음 화면이 표시됩니다.
    kazuaki@yeezy:~/fun/zenn.dev$ git rebase -i f41e5df5c31db4b3df7561447242038c0b677ea8
    Stopped at 63b4a85...  added zenn-cli
    You can amend the commit now, with
    
      git commit --amend
    
    Once you are satisfied with your changes, run
    
      git rebase --continue
    

    서명 추가


    2단계에서 대상 제출은 편집 가능 상태입니다.
    친절한 일에도 필요한 지령이 기재되어 있는데 그 나머지 지령에 따라 끝난다.
    그럼에도 이번 목적은 서명만 추가해 편집하는 것이기 때문에 --no-edit-S의 옵션을 지정해야 한다.
    명령의 상세한 상황은 아래와 같다.
  • --amend 수정 전 제출.
  • --no-edit 기존 메시지를 사용합니다.
  • -S GPG 서명을 지정합니다.
  • 이 지령을 클릭하면 다음과 같은 정보가 표시됩니다.
    kazuaki@yeezy:~/fun/zenn.dev$ git commit --amend --no-edit -S
    [detached HEAD 2fb6f5e] added zenn-cli
     Date: Sun Oct 17 21:01:49 2021 +0900
     2 files changed, 909 insertions(+), 896 deletions(-)
     rewrite yarn.lock (96%)
    

    편집 끝내기


    업데이트HEAD가 필요하기 때문에 마지막으로 리베이스를 계속하는 옵션--continue을 지정하여 편집을 끝냅니다.
    kazuaki@yeezy:~/fun/zenn.dev$ git rebase --continue
    Successfully rebased and updated refs/heads/master.
    

    서명 다시 확인


    그럼 편집이 잘 되는지 확인해 보세요.
    처음과 같이 두드리다git log --show-signature.
    kazuaki@yeezy:~/fun/zenn.dev$ git log --show-signature
    commit 2fb6f5e4ef43928ae465bf904efcfd3d98a0d45e (HEAD -> master)
    gpg: Signature made Sun 17 Oct 2021 09:33:28 PM JST
    gpg:                using EDDSA key ...BECD98A8A99831
    gpg: Good signature from "Kazuaki Ishiguro <[email protected]>" [ultimate]
    Author: Kazuaki Ishiguro <[email protected]>
    Date:   Sun Oct 17 21:01:49 2021 +0900
    
        added zenn-cli
    
    commit f41e5df5c31db4b3df7561447242038c0b677ea8 (origin/master)
    gpg: Signature made Mon 06 Sep 2021 10:19:01 AM JST
    gpg:                using EDDSA key ...BECD98A8A99831
    gpg: Good signature from "Kazuaki Ishiguro <[email protected]>" [ultimate]
    Author: Kazuaki Ishiguro <[email protected]>
    Date:   Mon Sep 6 10:19:01 2021 +0900
    
        Initial setup
    
    커밋을 편집하고 GPG 서명을 추가했습니다.
    같은 문제로 고민하는 사람에게 좋은 점이 있다면 다행이다.

    좋은 웹페이지 즐겨찾기