コミットする前に、考えられるシークレットを確認してください
コミットまたはプッシュの前に、GitTree には Possible secrets in this commit または Possible secrets in this push が表示されることがあります。スキャンはローカルであり、制限されています。 Unstage File、Add to .gitignore、Commit Anyway、または Push Anyway を使用できます。警告は秘密が存在することを証明するものではなく、沈黙は秘密が存在しないことを証明するものではありません。
GitTree で無料で動作: すべてのローカル Git 機能。アカウントは必要ありません。
このページでは
始める前に
- 秘密の警告は無料プランの一部です。 Local secret warnings が Warn before proceeding の場合にオンになります。
- スキャンでは、コミットのステージングされたコンテンツと、プッシュのサポートされている送信コミット範囲を読み取ります。ファイルの内容は GitTree に送信されません。
どこで見つけられますか
- 警告は、コミット時にコミット ボックスから、またはプッシュ時にプッシュ フローから開きます。
- Preferences、Local secret warnings 設定: Warn before proceeding または Off。
| アクション | macOS | WindowsとLinux |
|---|---|---|
| コミット | ⌘Enter | Ctrl+Enter |
| 設定 | ⌘, | Ctrl+, |
ステップ
警告を読んでください
タイトルは Possible secrets in this commit または Possible secrets in this push です。各行には、Private key、AWS access key、GitHub token、GitLab token、Slack token、Stripe live key、Google API key、または Sensitive file name などのルールと、行番号がある場合は行番号が付けられます。トークンはマスクされます。秘密鍵は Private key header として表示されます。
秘密をコミットに含めないでください
Unstage File はそのファイルをインデックスから削除します。 Add to .gitignore は無視ルールを追加します。ダイアログには、無視ルールではステージングされたコンテンツは削除されないため、ファイルのステージングも解除する必要があると表示されます。意図的に 1 行を許可するには、その行に
gittree:allow-secretを追加します。これにより、その行の警告が停止します。何も暗号化されません。続行するつもりがある場合にのみ続行してください
Commit Anyway または Push Anyway は継続します。 Cancel を指定すると、共有せずにコミット ボックスまたはプッシュに戻ります。一部の変更が検査されなかった場合は、ダイアログにその旨が表示されます。これをクリーンな結果としてではなく、不完全なスキャンとして扱います。
期待される結果
シークレットがステージングされなくなったか、警告を読んだ後に続行することを選択したかのいずれかです。プッシュする前に次のコミットの差分を確認してください。 .gitignore ルールは、ファイルがすでに含まれているコミットを書き換えません。
スキャンでカバーされないもの
Local secret warnings によると、検査はローカルで制限されたままであり、検査をオフにするのはアプリ全体の選択です。報告できるギャップは、The inspection limit was reached、Binary content was skipped、Lines longer than 4 KiB were skipped、および Some content could not be inspected です。 The optional secret scan was unavailable は、コンテンツを自分で確認する必要があることを意味します。
| ギャップ | 何をするか |
|---|---|
| バイナリコンテンツがスキップされました | 自分でファイルを開いてください。スキャンでは読み取れません。 |
| 4 KiB を超える行はスキップされました | エディタでその行を検索します。縮小された行上のトークンはスキャンされません。 |
| 検査限界に達しました | より小さいファイルのセットをコミットし、残りを読み取ります。 |
| 設定がオフです | 続行する前に「警告」を選択するまでは何もスキャンされません。 |
ルールとステージングされたファイルを無視する
ダイアログには、Ignore rules do not remove staged content. Unstage the file as well. git check-ignore はパスが .gitignore と一致することを表示できますが、git diff --cached は引き続きインデックスにパスを表示します、と表示されます。アンステージしてからコミットします。ルールを追加しても、既存のコミットからファイルは削除されません。
git diff --cached -- path/to/file
git restore --staged -- path/to/file
git check-ignore -v path/to/fileシークレットがすでにリモート上にある場合は、.gitignore を変更するだけでは十分ではありません。それを削除する新しいコミットが必要であり、古いコミットにそれを含めてはならない場合は履歴を書き直す必要があります。 GitTree は、すべてのクローンから秘密を消去することを約束するものではありません。コミットを拒否するフックも必要な場合は、ignore files と hooks を参照してください。
意図的に 1 行を許可する
Add gittree:allow-secret on a line to stop warning about it. コミットする必要がある行にそのマーカーを置きます。たとえば、実際の認証情報ではないフィクスチャ トークンなどです。マーカーがファイル内に表示されます。ライブキーを隠すために使用しないでください。 Commit Anyway はマーカーを追加せずにコミットします。
プッシュ警告により、送信しようとしているコミットが確認されます。 Possible secrets in this push は、すでにコミットされているファイルをステージング解除できません。新しいコミットで修正するか、未公開の履歴を書き直して、再度プッシュします。 リース付き強制プッシュ は、ブランチが非公開の場合の安全なリライト プッシュです。 チュートリアル では、このダイアログが必要になる前に毎日のコミットについて説明します。
何か問題が発生した場合
「潜在的な秘密については、続行する前に確認する必要があります。」
コミットまたはプッシュがダイアログで待機中です。ステージを解除するか、無視するか、行を許可するか、「とにかくコミット」または「とにかくプッシュ」を選択します。キャンセルすると、メッセージと作業ファイルがコミット用の場所に残ります。
「ルールを無視しても、ステージングされたコンテンツは削除されません。ファイルのステージングも解除します。」
.gitignore に追加すると無視ファイルのみが更新されます。 Unstage File を押すか、git list --staged を実行して、次のコミットにパスが含まれないようにします。
「一部の変更は検査されませんでした。」
スキャンが早期に停止したか、バイナリをスキップしたか、4 KiB を超える行をスキップしました。続行する前に、これらのファイルを自分で読んでください。
「オプションのシークレット スキャンは利用できませんでした。内容はご自身で確認してください。」
GitTree はスキャンを実行できませんでした。コミットはクリーンであると認定されていません。 diff を読み取り、確認した場合にのみコミットします。
質問
GitTree はシークレットを探すために私のファイルをアップロードしますか?
いいえ。設定では、検査はローカルで制限されたままであると指定されています。このダイアログでは、このコンピュータ上でコミットまたはプッシュしようとしている内容が確認されます。
きれいなダイアログは秘密がないことを証明しますか?
いいえ。バイナリ コンテンツと 4 KiB を超える行はスキップされ、検査が限界に達する可能性があり、パターンはすべてのシークレットと一致するわけではありません。警告も保証ではありません。
.gitignore は、すでにステージングしたシークレットを削除しますか?
いいえ。ルールを無視しても、ステージングされたコンテンツは削除されません。ファイルのステージングも解除します。また、ルールは古いコミットを書き換えません。
gittree:allow-secret は何をするのでしょうか?
ある行では、その行の警告を停止します。この行はテキストとしてコミットされたままです。共有したい価値観に対してのみ使用してください。
警告をオフにできますか?
はい。環境設定 › ローカル シークレットの警告 › オフ。それはアプリ全体の選択です。再度続行する前に警告を設定するまで、スキャンは実行されません。
