ブロックされたプッシュを解決する
ブロックされたプッシュを解決するには、そのプッシュが表示されるすべてのコミットからシークレットを削除する必要があります。
- シークレットが最新のコミットによって導入された場合は、「ブランチで最新のコミットによって導入されたシークレットを削除する」を参照してください。
- シークレットが以前のコミットに表示される場合は、「ブランチで以前のコミットによって導入されたシークレットを削除する」を参照してください。
ブランチで最新のコミットによって導入されたシークレットを削除する
- コードからシークレットを削除します。
- 変更をコミットするには、
git commit --amend --allを実行します。 これにより、新しいコミットを作成する代わりに、シークレットを導入した元のコミットが更新されます。 -
`git push` を使用して変更をプッシュします。
ブランチで以前のコミットによって導入されたシークレットを削除する
-
ブランチをプッシュしようとしたときに表示されたエラー メッセージを確認します。このエラー メッセージには、シークレットを含むすべてのコミットがリストされます。
remote: —— GitHub Personal Access Token —————————————————————— remote: locations: remote: - commit: 8728dbe67 remote: path: README.md:4 remote: - commit: 03d69e5d3 remote: path: README.md:4 remote: - commit: 8053f7b27 remote: path: README.md:4 -
次に、
git logを実行して、ブランチ上のすべてのコミットの完全な履歴と対応するタイムスタンプを表示します。test-repo (test-branch)]$ git log commit 8053f7b27 (HEAD -> main) Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:03:37 2024 +0100 my fourth commit message commit 03d69e5d3 Author: Octocat <1000+octocat@users.noreply.github.com> Date: Tue Jan 30 13:02:59 2024 +0100 my third commit message commit 8728dbe67 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:01:36 2024 +0100 my second commit message commit 6057cbe51 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 12:58:24 2024 +0100 my first commit message -
Focusing only on the commits that contain the secret, use the output of
git logto identify which commit comes earliest in your Git history.- In the example, commit
8728dbe67was the first commit to contain the secret.
- In the example, commit
-
Start an interactive rebase with
git rebase -i <COMMIT-ID>~1.- For
<COMMIT-ID>, use the commit identified in step 3. For example,git rebase -i 8728dbe67~1.
- For
-
In the editor, choose to edit the commit identified in step 3 by changing
picktoediton the first line of the text.edit 8728dbe67 my second commit message pick 03d69e5d3 my third commit message pick 8053f7b27 my fourth commit message -
エディターを保存して、閉じ、対話型リベースを開始します。
-
コードからシークレットを削除します。
-
`git add .` を使用して変更をステージング領域に追加します。メモ
完全なコマンドは、
git add .です: *addと.間にはスペースがあります。- スペースの後のピリオドはコマンドの一部です。
-
`git commit --amend` を使用して、変更をコミットします。 -
`git rebase --continue` を実行して、リベースを完了します。 -
`git push` を使用して変更をプッシュします。
プッシュ保護をバイパスする
メモ
ブロックをバイパスするオプションが表示されない場合は、コミットからシークレットを削除するか、ブロックされたシークレットをプッシュするために "特権のバイパス" 要求を送信する必要があります。 バイパス特権の要求を参照してください。
-
プッシュがブロックされたら、プッシュを実行したのと同じユーザーとして、GitHub から返される URL にアクセスします。 異なるユーザーがこの URL にアクセスしようとすると、
404エラーが表示されます。 -
シークレットをプッシュできる理由を最もよく表しているオプションを選択します。
- シークレットがテストでのみ使用され、脅威がない場合は、 [テストで使用されます] をクリックします。
- 検出された文字列がシークレットでない場合は、 [誤検知です] をクリックします。
- シークレットが本物で、後で修正する予定の場合は、 [後で修正します] をクリックします。
-
**[このシークレットをプッシュできるようにする]** をクリックします。 -
3 時間以内にコマンド ラインでプッシュを再試行します。 3 時間以内にプッシュしていない場合は、このプロセスを繰り返す必要があります。
バイパス権限を要求する
-
プッシュがブロックされたら、プッシュを実行したのと同じユーザーとして、GitHub から返される URL にアクセスします。 異なるユーザーがこの URL にアクセスしようとすると、
404エラーが表示されます。 -
[バイパス特権を要求する] で、コメントを追加します。 たとえば、シークレットがプッシュしても安全だと考える理由や、ブロックをバイパスする要求に関するコンテキストを提供する理由を説明できます。
-
[要求の送信] をクリックします
-
メール通知で要求への応答を確認します。 要求が確認されると、決定を通知する電子メールが届きます。
- 要求が 承認された場合は、シークレットを含むコミット (またはコミット) と、同じシークレットを含む将来のコミットをリポジトリにプッシュできます。
- 要求が 拒否された場合は、再度プッシュする前に、すべてのコミットからシークレットを削除する必要があります。 ブロックされたシークレットを削除する方法については、「ブロックされたプッシュを解決する」を参照してください。
詳細については、次を参照してください。
-
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api)