最後の N 個の Git コミットを結合する方法

最後の N 個の Git コミットを結合する方法
最後の N 個の Git コミットを結合する方法

Git コミットスカッシングをマスターする

Git は非常に強力なバージョン管理システムですが、場合によっては、複数のコミットを 1 つのコミットに結合したい場合があります。これにより、プロジェクト履歴が整理され、他の人が変更の進行状況を理解しやすくなります。メイン ブランチにマージする前に整理したい場合でも、単にコミット ログをすっきりさせたい場合でも、コミットのスカッシュは便利なテクニックです。

このガイドでは、最後の N 個のコミットを 1 つにまとめる手順を説明します。最終的には、より明確で簡潔なコミット履歴が得られます。プロセスを詳しく見て、Git ワークフローをより効率的かつ組織化してみましょう。

指示 説明
git rebase -i HEAD~N 最後の N 個のコミットに対して対話型リベースを開始し、コミットを潰したり編集したりできるようにします。
pick 対話型リベースでそのまま含めるコミットを選択するために使用されます。
squash (or s) 対話型リベースでコミットを前のコミットと結合するために使用されます。
git rebase --continue 競合を解決するかコミットメッセージを編集した後、リベースを続行します。
git push --force 強制的に変更をリモート リポジトリにプッシュし、履歴を上書きします。

Gitスカッシングの詳しい説明

上記のスクリプトで使用される主なコマンドは次のとおりです。 git rebase -i HEAD~N、最後の N 個のコミットの対話型リベースを開始します。このコマンドを使用すると、どのコミットをスカッシュまたは編集するかを選択できます。対話型リベースが開始されると、エディターが開き、コミットがリストされます。言葉を置き換えると picksquash (または s) 結合したいコミットの横にあるので、複数のコミットを 1 つにまとめることができます。保存してエディターを閉じると、Git は、スクワッシュされたコミットのコミット メッセージを編集するように求めるプロンプトを表示します。

リベース中に競合が発生した場合は、それらを解決してから使用できます。 git rebase --continue 続行します。最後に、変更をリモート リポジトリにプッシュする必要があります。 git push --force 履歴を上書きします。このプロセスは、特に共同プロジェクトでブランチをマージする前に、コミット履歴をクリーンアップして読みやすく管理しやすくするために非常に重要です。

Git での最後の N コミットの結合

コマンドラインでの Git の使用

git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# An editor will open with a list of commits
# Change 'pick' to 'squash' (or 's') for each commit you want to combine
# Save and close the editor
# Another editor will open to combine commit messages
# Save and close the editor to complete the rebase

Git Interactive Rebase を使用したコミットのマージ

Git Bash を使用したコミットのスカッシング

git rebase -i HEAD~N
# Change 'pick' to 'squash' for the commits to be squashed
# Save the file to proceed
# Edit the commit message as needed
# Save and close the editor
# Resolve any conflicts if they arise
git rebase --continue
# Continue the rebase process
git push --force
# Force push the changes to the remote repository

高度な Git コミット管理

Git でのコミットの破棄のもう 1 つの側面には、クリーンで意味のあるプロジェクト履歴を維持するという概念が含まれます。機能ブランチに取り組んでいる場合、増分的な進捗を表す多数の小さなコミットが発生するのが一般的です。これらは開発中には便利ですが、メイン ブランチの履歴が乱雑になる可能性があります。マージ前にこれらのコミットを潰すと、重要で高レベルの変更のみが記録されるため、他の人がプロジェクトの進化を理解しやすくなります。

さらに、コミットをスカッシュすると、リポジトリのサイズを削減できます。 Git の各コミットには変更のスナップショットが保存され、小さなコミットが多すぎると、ストレージ要件が増加する可能性があります。これらのコミットを組み合わせることでリポジトリが合理化され、多くの寄稿者がいる大規模プロジェクトの場合に特に有益です。

Git コミットのスクワッシングに関するよくある質問

  1. Git におけるコミットのスカッシュとは何を意味しますか?
  2. コミットのスカッシュとは、複数のコミットを 1 つのコミットに結合して、よりクリーンなプロジェクト履歴を作成することを意味します。
  3. インタラクティブなリベースを開始するにはどうすればよいですか?
  4. コマンドを使用して対話型リベースを開始できます。 git rebase -i HEAD~N、N をコミット数に置き換えます。
  5. インタラクティブなリベースにおける「pick」と「squash」の違いは何ですか?
  6. 「ピック」はコミットをそのまま保持することを意味し、「スカッシュ」は前のコミットと結合することを意味します。
  7. 競合を解決した後、リベースを続行するにはどうすればよいですか?
  8. 競合を解決した後、次のコマンドを使用します git rebase --continue 続行します。
  9. コマンド「git Push --force」は何をしますか?
  10. コマンド git push --force リモート リポジトリをローカルの変更で強制的に更新し、その履歴を上書きします。
  11. コミットをスカッシュするとデータ損失が発生する可能性がありますか?
  12. 慎重に行えば、スカッシュによってデータが失われることはありませんが、リベースを実行する前にブランチをバックアップすることが重要です。

Git スカッシングに関する最終的な考え

Git でのコミットのスカッシュは、プロジェクト履歴をクリーンで理解しやすい状態に保つための貴重なテクニックです。複数の小さなコミットを 1 つのより意味のあるコミットに結合することで、リポジトリの可読性と管理性を向上させることができます。この実践は、効果的なチームワークに明確なコミット ログが重要である共同作業環境では特に重要です。スムーズで成功したスカッシュ エクスペリエンスを確保するために、リベース プロセス中に競合を注意深く確認して解決することを忘れないでください。