機密ファイルとそのコミットをGit履歴から削除する

ステファン

GitプロジェクトをGitHubに配置したいのですが、機密データ(capistranoの/config/deploy.rbなどのユーザー名とパスワード)を含む特定のファイルが含まれています。

これらのファイル名を.gitignoreに追加できることはわかっていますが、Git内の履歴は削除されません。

また、/。gitディレクトリを削除して最初からやり直したくありません。

Git履歴内の特定のファイルのすべての痕跡を削除する方法はありますか?

ナタカド

すべての実用的な目的のために、あなたが最初に心配しなければならないことはあなたのパスワードを変えることです!あなたの質問から、あなたのgitリポジトリが完全にローカルであるかどうか、またはあなたがまだ他の場所にリモートリポジトリを持っているかどうかは明らかではありません。リモートで他のユーザーから保護されていない場合は、問題が発生します。これを修正する前に誰かがそのリポジトリのクローンを作成した場合、その人はローカルマシンにパスワードのコピーを持っているので、履歴から削除された「修正済み」バージョンに更新するように強制することはできません。あなたができる唯一の安全なことはあなたがそれを使ったどこでもあなたのパスワードを何か他のものに変えることです。


それが邪魔にならないように、これを修正する方法は次のとおりです。GitHubはFAQとしてその質問に正確に答えました

Windowsユーザーへの注意:このコマンドでは、一重引用符ではなく二重引用符( ")を使用してください

git filter-branch --index-filter \
'git update-index --remove PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force

2019年の更新:

これはFAQからの現在のコードです:

  git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
  --prune-empty --tag-name-filter cat -- --all
  git push --force --verbose --dry-run
  git push --force

このコードをGitHubなどのリモートリポジトリにプッシュし、他の人がそのリモートリポジトリのクローンを作成すると、履歴を書き換える状況になっていることに注意してください。この後、他のユーザーが最新の変更をプルダウンしようとすると、早送りではないため、変更を適用できないことを示すメッセージが表示されます。

これを修正するには、既存のリポジトリを削除して再クローン化するか、git-rebaseのマンページにある「UPSTREAMREBASEからの回復」の手順に従う必要があります

ヒント:実行git rebase --interactive


将来、機密情報で誤って変更をコミットしたが、リモートリポジトリプッシュする前に気付いた場合は、より簡単な修正がいくつかあります。最後のコミットが機密情報を追加するものである場合は、機密情報を削除してから、次のコマンドを実行できます。

git commit -a --amend

これにより、git rm。を使用して行われたファイル全体の削除など、行った新しい変更で以前のコミットが修正されます変更がさらに履歴に戻っても、リモートリポジトリにプッシュされない場合は、インタラクティブなリベースを実行できます。

git rebase -i origin/master

これにより、リモートリポジトリとの最後の共通の祖先以降に行ったコミットでエディタが開きます。機密情報を含むコミットを表す行で「pick」を「edit」に変更し、保存して終了します。Gitは変更をウォークスルーし、次のことができる場所にあなたを残します。

$EDITOR file-to-fix
git commit -a --amend
git rebase --continue

機密情報による変更ごと。最終的にはブランチに戻り、新しい変更を安全にプッシュできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Git:履歴コミットからファイルを削除する方法は?

分類Dev

Gitリポジトリのコミット履歴から大きなファイルを削除/削除するにはどうすればよいですか?

分類Dev

Git / Bitbucket-履歴/コミット全体からファイルを削除します

分類Dev

gitにコミットされたファイルを無視し、履歴から削除します

分類Dev

変更をコミットせずにgit履歴からファイルを削除するにはどうすればよいですか?

分類Dev

Git-履歴からコミットを削除する

分類Dev

gitlab apiで1つのファイルのコミット履歴を取得することは可能ですか?

分類Dev

履歴全体のすべてのコミットからのgitビュー/コピーファイル

分類Dev

分岐したコミットからファイルの変更履歴を確認する方法

分類Dev

Git履歴からファイルを削除する方法

分類Dev

Git履歴から大きなファイルを削除する

分類Dev

コミット履歴から100MBを超えるファイルを削除します-Githubへの移行に失敗します

分類Dev

リポジトリに存在しなくなったファイルの履歴からコミットを削除する方法

分類Dev

誤ってコミットされた大きなファイルをコミット履歴から削除する

分類Dev

Git-ブランチの履歴からファイルを削除する

分類Dev

Gitコミットからファイルを削除する

分類Dev

コミット履歴のある別のフォルダーにファイルを移動しますか?

分類Dev

すべてのgit履歴からファイルを削除します

分類Dev

コミット履歴が表示されるのにGitHubがファイル履歴を表示しないのはなぜですか?

分類Dev

git履歴からファイルの一部のコンテンツを削除します

分類Dev

フォルダからサブモジュールリポジトリを作成し、そのgitコミット履歴を保持します

分類Dev

履歴と一緒にgitリポジトリからファイルを完全に削除します

分類Dev

履歴と一緒にgitリポジトリからファイルを完全に削除します

分類Dev

履歴と一緒にgitリポジトリからファイルを完全に削除します

分類Dev

Git:プロジェクトのコミット履歴で削除されたファイルを見つける方法は?

分類Dev

GIT:最初のコミットにファイルを追加する(そしてプロセスの履歴を書き換える)にはどうすればよいですか?

分類Dev

gitは履歴からマージコミットを削除します

分類Dev

ディレクトリとそのファイルをgit履歴から削除しましたが、PACKファイルにはまだファイルが含まれています

分類Dev

以前のコミットから.gitディレクトリからファイルを削除する

Related 関連記事

  1. 1

    Git:履歴コミットからファイルを削除する方法は?

  2. 2

    Gitリポジトリのコミット履歴から大きなファイルを削除/削除するにはどうすればよいですか?

  3. 3

    Git / Bitbucket-履歴/コミット全体からファイルを削除します

  4. 4

    gitにコミットされたファイルを無視し、履歴から削除します

  5. 5

    変更をコミットせずにgit履歴からファイルを削除するにはどうすればよいですか?

  6. 6

    Git-履歴からコミットを削除する

  7. 7

    gitlab apiで1つのファイルのコミット履歴を取得することは可能ですか?

  8. 8

    履歴全体のすべてのコミットからのgitビュー/コピーファイル

  9. 9

    分岐したコミットからファイルの変更履歴を確認する方法

  10. 10

    Git履歴からファイルを削除する方法

  11. 11

    Git履歴から大きなファイルを削除する

  12. 12

    コミット履歴から100MBを超えるファイルを削除します-Githubへの移行に失敗します

  13. 13

    リポジトリに存在しなくなったファイルの履歴からコミットを削除する方法

  14. 14

    誤ってコミットされた大きなファイルをコミット履歴から削除する

  15. 15

    Git-ブランチの履歴からファイルを削除する

  16. 16

    Gitコミットからファイルを削除する

  17. 17

    コミット履歴のある別のフォルダーにファイルを移動しますか?

  18. 18

    すべてのgit履歴からファイルを削除します

  19. 19

    コミット履歴が表示されるのにGitHubがファイル履歴を表示しないのはなぜですか?

  20. 20

    git履歴からファイルの一部のコンテンツを削除します

  21. 21

    フォルダからサブモジュールリポジトリを作成し、そのgitコミット履歴を保持します

  22. 22

    履歴と一緒にgitリポジトリからファイルを完全に削除します

  23. 23

    履歴と一緒にgitリポジトリからファイルを完全に削除します

  24. 24

    履歴と一緒にgitリポジトリからファイルを完全に削除します

  25. 25

    Git:プロジェクトのコミット履歴で削除されたファイルを見つける方法は?

  26. 26

    GIT:最初のコミットにファイルを追加する(そしてプロセスの履歴を書き換える)にはどうすればよいですか?

  27. 27

    gitは履歴からマージコミットを削除します

  28. 28

    ディレクトリとそのファイルをgit履歴から削除しましたが、PACKファイルにはまだファイルが含まれています

  29. 29

    以前のコミットから.gitディレクトリからファイルを削除する

ホットタグ

アーカイブ