問題は、reposを使ってブランチの意味を決めることです。好奇心の中で、コミットが拒否された状況をどのように処理しますか(それがうまくいった後にコミットします)?
任意のソリューション(ニーズに適したブランチ戦略に移行する以外は、1つのレポだけでは十分ではないが対処しやすくなる可能性があります)は面倒です。
コミット3にコミット6をリベースすることができます。本当には、すべての開発者にとって混乱を招くように、そのリベースをテストレポに戻したいと考えています。しかし、そのrebase がに戻ってテストに戻っていない場合、最終的にreposを同期させるためにはプロダクションからも削除する必要があります。
Test Repo
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
Prod Repo
1 --- 2 --- 3 <--(master)
Local
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
リベースを行います。今、あなたは今、あなたがをテストする必要があります
Test Repo
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
Prod Repo
1 --- 2 --- 3 <--(master)
Local
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
\
6' <--(temp_master)
を持って対応するSHAのID
git checkout master
git checkout -b temp_master
git rebase --onto 3 5
と、このコマンドでコミット番号を交換してください。これはこれまで存在しなかったコードの新しい状態であり、テストされていません。 6
が誤って4
または5
の何かに依存する場合は、が壊れています。
テストすると、うまく動作します。生産
Test Repo
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
Prod Repo
1 --- 2 --- 3 --- 6' <--(master)
Local
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
\
6' <--(temp_master)
を得
git push production temp_master:master
に修正プログラムを入手するには、今、私のアドバイスは、できるだけ早く4
と5
の受け入れテストを完了した後、production
にプッシュmaster
を強制し、temp_master
を削除することです。
5
の準備が整う前に4
をプッシュする必要がある場合は、にリベースする必要があります。 (4
がコミットのSHAに置き換えられ再び)
git rebase temp_master 4
git branch -f temp_master
。
また、の何かが4
とやりとりする可能性がありますので、4'
は新しいコードであり、テストされていない状態です。すべては順調です?その後:
git push production temp_master:master
、あなたはこの時点で
Test Repo
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
Prod Repo
1 --- 2 --- 3 --- 6' -- 4' <--(master)
Local
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
\
6' --- 4' <--(temp_master)
を取得し、あなたがテストしたとき5
あなたにもそれをリベースし、ちょうど再注文したブランチにトラック輸送を続けるかもしれないと思うかもしれません生産中。テストでブランチを並べ替えるつもりがない限り(そして全員のローカルリポジトリでも)、面倒な作業ではありません。彼らは変化の同じ累積セットと同じを持っている - あなたは
Local
1 --- 2 --- 3 --- 4 --- 5 --- 6 <--(master)
\
6' --- 4' --- 5' <--(temp_master)
を取得するために5
をリベースしても、あなたが6
と5'
は同じように見えることがありますので、一日の終わりに、あなたは、共通の歴史を必要とします結果ツリーではありますが、それらは異なるコミットであり、一方をベースにした作業は他方にリベースされる必要があります。テストレポで
番号を使用すると、4と5で導入された変更をしたくない場合は、私はそれに対して助言する3 – ElpieKay