ホームページ > 開発ツール > Git > git で履歴コミットを削除する方法

git で履歴コミットを削除する方法

PHPz
リリース: 2023-04-26 09:51:26
オリジナル
8979 人が閲覧しました

近年、Git は強力なバージョン管理ツールとして、開発チームの間でますます人気が高まっています。ただし、Git を使用すると、不正なコミットが表示される場合があり、これらのコミットがプロジェクトに悪影響を与える可能性があります。これらの履歴コミットを削除する方法は、Git ユーザーがよく直面する問題となっています。この記事では、Git で履歴コミットを削除する方法について詳しく説明します。

1. Git 送信履歴

Git 送信履歴は多くの送信で構成されています。 Git でコミットを行うたびに、新しいコミットが作成されます。各提出物には独自の識別子 (SHA) があり、提出物の作成者、日付、提出物の説明などの情報が含まれています。

Git のコミット履歴は、Git コマンド ラインまたは Git クライアント ツールを使用して表示できます。たとえば、Git コマンド ラインを使用すると、次のコマンドを使用してこのプロジェクトのコミット履歴を表示できます。

git log
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

このコマンドは、現在のブランチ上のすべてのコミットを逆順に一覧表示します。各コミットには独自の SHA、コミッターの名前と電子メール、コミット日、およびコミット メッセージがあります。

2. 過去の提出物を削除する理由

共同開発のプロセスでは、不適切な提出物の発生につながる多くの人的要因が発生します。 「不正な提出物」とは、エラー、セキュリティの脆弱性、機密情報などが含まれる可能性のある提出物です。これらの不正なコミットがメインライン ブランチにマージされている場合、プロジェクトの他の部分に悪影響を及ぼす可能性があります。

さらに、パスワード、API キー、その他の機密情報など、コードを送信する前に他の人に見られたくないコンテンツを含めると、送信後に公開される可能性があります。現時点では、過去の投稿を削除することがユーザーのプライバシーを保護する方法です。

3. Git で履歴コミットを削除する方法

Git では、履歴を書き換える方法と Git のフィルタリング メカニズムを使用する方法の 2 つで履歴コミットを削除します。

  1. 履歴の書き換え

履歴の書き換えは、実際には履歴の送信を変更することで実現されます。これは、すでに公開されたコミットに変更や再配置を行うことを意味します。 Git コミット履歴を削除する手順は次のとおりです。

(1) 次のコマンドを使用してコミット履歴を表示します。

git log
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

(2) 削除するコミットの SHA を見つけます。そしてそれを記録します。

(3) 以下のコマンドで履歴を書き換えます。このコマンドで、SHA を削除するコミットの SHA に置き換えます。

git rebase -i SHA^
ログイン後にコピー

このコマンドは、選択したコミットの最後のコミット以降のすべてのコミットのリストを含むエディターを開きます。

(4) 削除するコミットの前の「pick」を「drop」に変更するか、シャープ記号を使用して行をコメントアウトします。保存してエディタを閉じます。

(5) 次のコマンドを実行して、Git のコミットを強制的に上書きします:

git push --force
ログイン後にコピー

最後に、次のコマンドを使用して、コミット履歴が正常に削除されたかどうかを確認できます:

git log
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  1. Git のフィルタリング メカニズムの使用

Git では、filter-branch コマンドを使用してコミット履歴を削除できます。このコマンドはリポジトリ全体をコピーし、指定されたフィルターを各コミットに適用します。以下は、Git のフィルタリング メカニズムを使用して Git コミット履歴を削除する手順です。

(1) 次のコマンドを使用して、コピー リポジトリを作成します。

git clone --mirror <Git URL>
ログイン後にコピー

(2) 次のコマンドを使用して、コピー リポジトリに入ります:

cd <repository name>.git
ログイン後にコピー

(3) 次のコマンドを使用して履歴送信を削除します:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch <filename>" --prune-empty --tag-name-filter cat -- --all
ログイン後にコピー

このコマンドは、 という名前のファイルの履歴送信を削除するために使用されます。このコマンドは必要に応じて変更できます。ここでは、 --tag-name-filter cat を使用してタグを修正します。最後に、このコマンドはすべてのブランチに適用されます。

(4) 次のコマンドを使用して、変更を Git リポジトリにプッシュします:

git push --all --force
ログイン後にコピー

最後に、次のコマンドを使用して、コミット履歴が正常に削除されたかどうかを確認できます:

git log
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

four 、概要

履歴を書き換えるか、Git のフィルタリング メカニズムを使用することで、Git の履歴コミットを削除できます。ただし、コミット履歴を削除する前に、慎重に検討し、すべてのチームメンバーが変更の影響を理解していることを確認する必要があります。さらに、ストレージのオーバーヘッドを軽減するために、変更をマージする前に Git リポジトリを定期的にクリーンアップする必要があります。

以上がgit で履歴コミットを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート