Git は一般的に使用されるバージョン管理ツールであり、プロジェクト開発で広く使用されています。プロジェクト開発中、私たちは通常、コードの送信、ブランチのマージ、その他の操作を含むバージョン管理と管理のためにさまざまな git コマンドを使用します。ただし、場合によっては、機密情報の削除や不要なコミット レコードのクリアなど、Git 履歴のクリアが必要になる場合があります。以下では、Git 履歴をクリアする方法について説明します。
1. バックアップ
Git 履歴の消去操作を実行する前に、操作中のエラーや予期せぬ事態を防ぐためにバックアップを実行する必要があります。必要に応じてコード ベースを復元できるように、現在のコード ベースを安全な場所にバックアップすることが重要です。 Git のパッケージング コマンドを使用して、プロジェクトを圧縮ファイルにバックアップできます。例:
git archive --format zip --output backup.zip HEAD
このコマンドは、現在のコード ベースを ZIP ファイルにパッケージ化し、backup.zip に保存します。
2. 履歴レコードをクリアします
単一ファイルの履歴レコードを削除しますこれは比較的単純な操作なので、次のコマンドを使用して実現できます。
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch path/to/file' --prune-empty -- --all
このコマンドは、履歴レコードからターゲット ファイルを完全に削除します。このうち、path/to/file
はクリアするファイルパスを表します。
コミットとその後の履歴を削除する必要がある場合があります。これを行うには、Git の rebase
コマンドを使用できます。具体的には、次の手順を実行する必要があります。
1) 次のコマンドを使用して、プロジェクト内のすべてのコミットを表示します。
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
このコマンドは、プロジェクト内のすべてのコミット レコードを表示します。
2) クリアするコミットの SHA 値を決定する
削除するコミットの SHA 値を見つける必要があります。これは、以下のコミット ログから取得できます。
commit 55d4d98de4caf2ac1a8f783624c58e533500f3d7 Author: John Doe <john@doe.com> Date: Fri Apr 30 16:01:07 2021 -0700 Added new feature
上記の例 のコミット SHA 値は 55d4d98de4caf2ac1a8f783624c58e533500f3d7
.
3) 次のコマンドを使用して、クリアするコミットをポップアップ表示します
$ git rebase -i <commit-hash>^
Forたとえば、55d4d98de4caf2ac1a8f783624c58e53 3500f3d7
コミットとその後の履歴の SHA 値を削除したい場合、次のコマンドを実行できます:
$ git rebase -i 55d4d98de4caf2ac1a8f783624c58e533500f3d7^
4) インタラクティブ ウィンドウを編集してターゲット コミットをポップアップ表示します。
対話型モードでは、ターゲットのコミットが「ドロップ」としてマークされているを削除し、ファイルを保存して終了する必要があります。例は次のようになります。
pick 44a0c2c this is an invalid commit, which should be removed drop 55d4d98 Added new feature
上記の例では、55d4d98
履歴が削除され、44a0c2c
履歴が最新のコミットになります。
5) 次のコマンドを使用して古い履歴レコードをクリアします。
$ git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ./' --tag-name-filter cat -- --all
このコマンドは、「ドロップ」としてマークされたコミットとその後のコミットをクリアできます。
6) リモート ウェアハウスへのプッシュ
最後に、リモート ウェアハウスの履歴レコードを更新し、履歴レコードの正確性を確認するために、リモート ウェアハウスへのプッシュを強制する必要があります。
$ git push origin --force --all
上記のコマンドを実行するときは注意し、必ずコード ベースをバックアップする必要があることに注意してください。一度削除すると復元できないためです。
概要
この記事では、Git を使用して履歴をクリアする方法を紹介します。これらの操作を実行する前に、履歴レコード操作の結果を考慮し、回復不能な損失を避けるためにバックアップを作成する必要があります。同時に、履歴記録の消去は避け、必要な場合にのみ使用する必要があります。
以上が履歴をクリアするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。