すべてのコミットを1つにまとめるにはどうすればよいですか?

How Do You Squash All Commits One



In Git Squashは、コミットに一連の変更を加えてから、それを1つのコミットに統合できるようにする手法です。例を使用して説明しましょう。コミットの数がnであり、それらにgitスカッシュを適用すると、すべての「n」コミットを1つのコミットにスカッシュまたは圧縮できます。 Gitスカッシュは、いくつかの大きなコミットを小さな単一の意味のあるコミットに変更するために使用されます。したがって、gitログをより明確にすることができます。押しつぶし手法を使用してブランチをマージすることもできます。常にコミットを押しつぶし、マスターブランチまたは親ブランチでリベースすることをお勧めします。

この記事では、gitの1回のコミットですべてのコミットをスカッシュする方法について詳しく説明します。 CentOS 8Linuxディストリビューションにすべてのステップを実装しました。







スカッシュはgitと1つにコミットします

次の手順でgitスカッシュを実装できます。



ステップ1:[コミットの開始]を選択します

押しつぶす必要のあるコミットの数を決定するには、ターミナルで次のコマンドを実行します。



$ gitログ





次に、次のコマンドを使用してgitを呼び出し、インタラクティブなリベースセッションを開始します。

$ git rebase -i HEAD〜N

上記のHEAD〜Nで、「N」は「gitlog」コマンドから決定したコミットの総数です。コミット数が4であると仮定します。これで、コマンドは次の形式に変わります。



$ git rebase -i HEAD〜4

次のコミットリストが端末に表示され、各コミットが単語pickで見つめられます。

ステップ2:ピックをスカッシュに変更する

ここでは、すべてのコミットをスカッシュ可能としてマークし、開始点として使用される最初のコミットを残します。したがって、「i」を押してvimエディターを挿入モードに変更し、最初のコミットを除くすべてのピックコミットをスカッシュに変更します。次に、「Esc」を押して挿入モードを変更し、「:wq!」を押してすべての変更を保存して終了します。シンプルなテキストエディタを使用している場合は、「ピック」という単語を「スカッシュ」に変更して、変更を保存するだけです。その後、ターミナルに次のウィンドウが表示されます。

このシェルを離れると、ターミナルウィンドウに次のメッセージが表示されます。

すべてを潰すと、すべてのコミットが1つのコミットステートメントに結合され、ターミナルに表示されます。

結論

gitスカッシュを使用すると、多くのコミットを1つの小さなコミットに簡単に押しつぶしたり圧縮したりできます。この手法を使用して、ドキュメントのスペルミスを修正できます。この記事ではgitスカッシュを実装しました。また、gitrebaseコマンドとsquashコマンドを使用して履歴をクリーンにする方法も確認しました。