、あなたが取り除くために、対話型リベースを行うことができますいずれかo
その後
# check out master and update it first
git checkout master
git merge origin/master
# cherry-pick the latest commit from the development branch
git cherry-pick dev-branch
# cherry-pick the other commit (use the hash from the log)
git cherry-pick theothercommitshash
、あなたがmaster
の上にきれいにこれら二つのコミットを持っていて、ソフトリセットを使用してそれらをつぶすことができます:あなたはしたくない、またはあなたは、単に2は、あなたが実際に残しておきたい桜選ぶことができ、それらのFまたは対話型のリベースです。
問題は、コミット#1-4を1つのコミットに縮小し、そのコミットをマージして#5を起点/マスターブランチにコミットしたいということです。
これは、実際には対話型のリベースの完全な使用例です。
devブランチから起動し、git rebase -i dev~5
を実行して、最後の5回のコミットのインタラクティブなリベースプランを使用してエディタを起動します。それは次のようになります。
pick <hash1> Commit 1
pick <hash2> Commit 2
pick <hash3> Commit 3
pick <hash4> Commit 4
pick <hash5> Commit 5
変更をsquash
にインナー3 pick
ので、それは次のようになります。
pick <hash1> Commit 1
squash <hash2> Commit 2
squash <hash3> Commit 3
squash <hash4> Commit 4
pick <hash5> Commit 5
squash
基本的に「コミットが、前にそれをメルドを取る」という意味します。したがって、この場合、コミット1はそのまま選択され、コミット2、3、および4はすべて1つずつ順番に押しつぶされます。したがって、4つのコミットのすべての変更を含む1つのコミットで終わります。
インタラクティブなリベースを開始するには、プランを保存してエディタを終了し、Gitがプロンプトを表示すると、縮んだコミットのコミットメッセージを調整します。最終的には、ブランチ上で2つのコミットだけが終了します。潰れたコミットとコミット5がその上にリベースされます。
最後に、ブランチをマスターにマージするだけで完了です。
masterをチェックアウトして更新した後、最初の4つのコミットを追加できますか?もしそうなら、どうすればいいのか教えていただけますか?申し訳ありませんが、私はgitにかなり新しいです。 – lezzago
@lezzagoアップデートに関する回答が更新されました。 – poke