以下の内容はhttps://kyon-mm.hatenablog.com/entry/20121217/1355706783より取得しました。


Gitでpushを分割する

4つのコミットをmasterにしてしまったけど、pushしたいのは2つだけ。。。というときにどうするのか?

A00000008:master これは別にpushしたい
A00000007: これは別にpushしたい
A00000006: このコミットはpushしたい
A00000005: このコミットはpushしたい
A00000004:remote/origin/master
A00000003:
A00000002:
A00000001:


追記ここから
前提:ブランチつくって作業するのが原則。masterでできる限りコミットしない。
つまり、僕がこのような状況に陥るときは、git checkout -b hogehogeとしたつもりがmasterで作業していたぜーっていう感じ。
追記ここまで

手順

で、僕の場合は次の手順

  1. pushしたいコミット群の最後をcheckoutする
  2. 別にpushしたいコミットを退避するようのブランチをつくる
  3. cherry-pickで別にpushしたいコミット群をブランチにコピーする
  4. masterから別にpushしたいコミット群を削除する
  5. masterをpushする


コマンドでいうと
1. pushしたいコミット群の最後をcheckoutする

git checkout A00000004

2. 別にpushしたいコミットを退避するようのブランチをつくる

git checkout -b another_task

3. cherry-pickで別にpushしたいコミット群をブランチにコピーする

git cherry-pick master~1
git cherry-pick master~0

4. masterから別にpushしたいコミット群を削除する

git checkout master
git reset --hard HEAD^^

5. masterをpushする

git push origin master

補足

masterで作業するのが好きな人はpushの範囲を指定するとかでもいいと思います。




以上の内容はhttps://kyon-mm.hatenablog.com/entry/20121217/1355706783より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14