適切なタイトルが思いつかなかったので分かりづらいかもしれませんが、
Gitで次のような運用をする場合にラクでうまい方法はないでしょうか?
まず、リモートリポジトリにはA→B→Cという変更された履歴があるとします。
(A/B/Cはリビション)
これをローカルPCにクローンして開発するのですが、
ローカルPC側の事情で取得したコードそのままでは開発ができないので、
ローカルリポジトリ上では少し改造してから開発をすすめる必要があるとします。
そこで、ローカルではA→B→C→C'という風に別ブランチを切って開発をすすめるとします。
(’ダッシュはブランチと考えて下さい)
ローカルで開発を進めると、A→B→C→C'→D'→E'と進みますが、
ここでリモートにプッシュするときにどうするのがいいのだろう?ということです。
E'をそのままプッシュすると、C'での変更は他の開発者の環境に合わないので迷惑がかかります。
貴方なら以下のどの方法を採用しますか?
- cherry-pickを使う方法。Cを起点にして、D'とE'をcherry-pickすることで、
C→D→Eとmasterブランチを進めてからEをプッシュする。
0. revertを使う方法。E'の段階でC'をrevertすることで変更を打ち消してから、プッシュする。
つまり、E'+(revert C')→Eとして、Eをプッシュ。
0. rebase -iする方法。E'の段階でC~E'をrebase -iして、ローカルリポジトリの
履歴ごと変える。つまり、C→D'→E'→C'の順序になるようにrebaseし直して、
ひとつ前のE'をリモートにプッシュする。
0. (あれば)その他の方法・・・
お気づきのデメリットなどもあれば、ご指摘下さい。
なお、諸般の事情により「自分のPCの環境を、他の開発者に合わせる」ということは
できないものとします。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/29 05:26