0Pricing
Git & GitHub Professional Workflow · レッスン

git filter-repo で履歴を書き換える

git filter-repo を使ってリポジトリの履歴を大規模に書き換え、大きなファイルや機密データを削除する方法を学びます。

「git filter-repo で履歴を書き換える」はCoddyKit上の無料Git & GitHub Professional Workflowレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGit & GitHub Professional Workflow学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Git & GitHub Professional Workflowコースには全4レッスンが含まれています。

履歴を書き換える理由

漏えいしたパスワードの削除、誤ってコミットした巨大ファイルの削除、すべてのコミットに含まれる作成者のメールアドレスの修正など、リポジトリの履歴全体を書き換えなければならない場合があります。

git filter-repoの概要

git filter-repoは、履歴を書き換えるための最新かつ高速なツールです。古く低速なgit filter-branchに代わるものです。

ツールのインストール

これは独立したプログラムで、通常はpipやパッケージマネージャーを使ってインストールします。

pip install git-filter-repo

必ずクローンで作業する

履歴の書き換えは破壊的な操作です。問題が起きた場合に破棄できるよう、新しいクローンで作業してください。

git clone --mirror git@github.com:you/repo.git

履歴からのファイル削除

すべてのコミットからファイルを完全に削除するには、--pathと--invert-pathsオプションを使います。

git filter-repo --path secrets.env --invert-paths

大きなBlobの削除

サイズのしきい値を超えるファイルを削除して、肥大化したリポジトリを縮小できます。

git filter-repo --strip-blobs-bigger-than 10M

作成者メールアドレスの書き換え

mailmapまたはコールバックを使うと、すべてのコミットに含まれる誤った作成者メールアドレスを修正できます。

git filter-repo --mailmap my-mailmap.txt

履歴内のテキスト置換

式ファイルを使って、秘密の文字列が現れるすべての場所から消去します。

git filter-repo --replace-text expressions.txt

コミットハッシュの変更

履歴を書き換えると、影響を受けるすべてのコミットに対して新しいコミットハッシュが生成されます。リポジトリの履歴は、古いコピーの履歴と分岐します。

結果の強制プッシュ

リモートの履歴と一致しなくなるため、書き換え後は強制プッシュする必要があります。

git push --force --all

チームとの調整

全員のクローンが古い状態になるため、チームメンバーは再度クローンしなければなりません。削除したデータが復活するのを防ぐため、書き換えを事前に知らせてください。

理解度チェック

履歴の書き換えについて、理解度を確認しましょう。

まとめ

履歴を書き換える方法を学びました。

  • git filter-repoはfilter-branchに代わるツールです
  • 履歴全体からファイル、大きなBlob、秘密のテキストを削除できます
  • 必ずクローンで作業し、コミットハッシュが変わることに注意します
  • その後、強制プッシュしてチームに再クローンしてもらいます

よくある質問

「git filter-repo で履歴を書き換える」レッスンは無料ですか?

はい。「git filter-repo で履歴を書き換える」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Git & GitHub Professional Workflowコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Git & GitHub Professional Workflowコースには全4レッスンが含まれています。

「git filter-repo で履歴を書き換える」で何を学びますか?

git filter-repo を使ってリポジトリの履歴を大規模に書き換え、大きなファイルや機密データを削除する方法を学びます。 ブラウザで直接実行するハンズオンコードでGit & GitHub Professional Workflowを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Git & GitHub Professional Workflowを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGit & GitHub Professional Workflowは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「git filter-repo で履歴を書き換える」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGit & GitHub Professional Workflowレッスンでコードを書いて実行できますか?

はい。すべてのGit & GitHub Professional Workflowレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Git Reflogと履歴の復元
  2. デバッグのためのGit Bisect
  3. リポジトリのメンテナンスと整理
  4. git filter-repo で履歴を書き換える
← Git & GitHub Professional Workflowに戻る