1. ホーム
  2. git

[解決済み] Git が以前のコミットをサインオフ?

2023-01-12 19:41:31

質問

サインはどうすればいいのでしょうか? -s ) を付ける方法を教えてください。

どのように解決するのですか?

直前のコミットにサインオフするには、amend オプションを使用します。

git commit --amend --signoff

編集: この amend は最新のコミットのみに署名します。複数のコミットにサインオフするには filter-branchinterpret-trailers が示唆するように vonc などを使うべきでしょう。以下は、私のために機能したものです。

まず、トークンを置き換えるためにgitを設定します。 signSigned-off-by . これは一度だけ行う必要があり、次のステップで必要になります。

git config trailer.sign.key "Signed-off-by"

コマンドは git filter-branch というスイッチで --msg-filter はコミットごとに一度だけフィルタを評価します。フィルタはコミットメッセージを標準入力で受け取り、標準出力に出力する任意のシェルコマンドを使用できます。独自のフィルタを作成することもできますし git interpret-trailers を使うこともできます。以下は、現在のブランチの最新の 2 つのコミットを、現在のユーザーとメールアドレスでサインオフする例です。

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 を使うか、よりよい -force-with-releaseを使用する。 .

注2) カスタムスクリプトを書くつもりなら、以下の点に注意してください。 git filter-branch はカレントディレクトリを <repo>/.git-rewrite/t . スクリプトへの相対パスを使用しても、通常はうまくいきません。代わりに、スクリプトはあなたの $PATH の中にあるか、絶対パスで提供されなければなりません。