Pages

2023年5月26日金曜日

[Git] ログ、履歴から特定のファイルを削除する

 経緯

テストデータだが、メールアドレスなどを含むファイルを間違ってコミットしてしまったので、ログからも削除したい。

早速調べたが、どうやらGitには最初からこれに対応するコマンドは用意されておらず拡張機能を追加してやる必要があるようだ。

以下に今回の対応方法をメモする。


対応方法

git filter-branch」で対応もできるようだが、どうやらこれはもう古い対応方法なようで、今は「git filter-repo」で対応する方がスマートなようだ。

1. Python のインストール

既にPythonがインストールされているかを確認。

コマンドプロンプトやPowerShellで以下コマンドを実行する。

> py --version

インストールされているPythonのバージョンが表示されれば、Pythonが正常にインストールされています。

Pythonをインストールしていない場合

公式のPythonウェブサイト(https://www.python.org/downloads/windows/)から最新の安定版をダウンロードし、インストーラーを実行してPythonをインストールしてください。インストール時に「Add Python to PATH」オプションを有効にすることを忘れないでください。

2. Gitのインストール

Gitをまだインストールしていない場合は、Git公式のウェブサイト(https://git-scm.com/downloads)からGitをダウンロードしてインストールしてください。

3. コマンドプロンプトまたはPowerShellを開きます

4. git filter-repoのインストール:

インストールにはpipコマンドを使用します。以下のコマンドを入力してgit filter-repoをインストールします。

>pip install git-filter-repo

インストールが完了すると、git filter-repoが使用可能になります。

5. インストールの確認:

インストールが成功したかどうかを確認するには、コマンドプロンプトまたはPowerShellで以下のコマンドを入力します。

> git filter-repo --version

バージョン情報が表示されれば、git filter-repoが正常にインストールされています。

これでWindowsにgit filter-repoがインストールされました。以降は、git filter-repoコマンドを使用してリポジトリのフィルタリングを行うことができます。

`git filter-repo`を使用してGitの履歴からファイルを削除

`git filter-repo`を使用してGitの履歴からファイルを削除するには、次の手順を実行します。

  1.  `git filter-repo`をインストールします。公式のGitHubリポジトリ(https://github.com/newren/git-filter-repo)にアクセスして、インストール手順に従ってください。
  2. 削除したいファイルを含むリポジトリのディレクトリに移動します。
  3. `git filter-repo`コマンドを実行します。以下のような形式でコマンドを入力します。

    > git filter-repo --path <file-path> --invert-paths

    `<file-path>`には削除したいファイルのパスを指定します。このコマンドは、指定したファイルを含まない新しいリポジトリを作成します。

    例: > git filter-repo --path docker/db/dump/all.sql --invert-paths --force

  4. `git filter-repo`が実行されると、履歴から指定したファイルが削除されます。
  5. 必要に応じて、新しいリポジトリをリモートにプッシュするなど、適切な操作を行います。
注意: `git filter-repo`は非常に強力なツールです。ファイルの削除などの操作を行う前に、操作の影響や結果を理解し、バックアップを取ることを強くお勧めします。

git filter-repo --path docker/db/dump/all.sql --invert-paths --force

0 件のコメント:

コメントを投稿

Followers