1. ホーム
  2. git

[解決済み] マージコミットを挟んだコミットを潰すには?

2023-02-19 16:50:14

質問

私は機能ブランチで作業しています。

  1. いくつかのコミットを行いました。コミットを潰しました。
  2. 変更をリモートブランチにプッシュしました。コンフリクトが発生しました。
  3. master からの変更をマージし、feature ブランチでのコンフリクトを解消しました。
    • git fetch origin master
    • git merge FETCH_HEAD
    • コンフリクトを手動で解決しました。
    • git commit
    • git push
  4. もう一回コミットしました。
  5. というわけで、現在のコミット履歴はこんな感じです。 現在のものから古いものへ。

    1. コミット 3
    2. コミット M yyy (マージ)
    3. コミット 2

    feature ブランチを master にマージする前に、上記の 3 つのコミットを 1 つにまとめるにはどうすればよいですか?

    どのように解決するのですか?

    以下の方法があります。 rebase -i で始まる commit 2 の親コミット(すなわち master のコミットです。おそらく、マージコミットまでたどり着いたときにコンフリクトを再解決する必要があるでしょう。

    ですから、もしあなたの歴史が次のようなものであれば

      * D commit 3 (HEAD)
      * M merge
     /|
    | * C commit 2
    * | B commit on master
    |/
    * A (master)
    
    

    で始める git rebase -i A . の両方を含むコミットのリストが表示されます。 masteryour_branch を含むが、マージコミットは含まない。 pick は、最初のもの ( B または C タイミングによっては) と squash となります。