をコミット:理解のgitの問題は、我々が過去に何らかの形で台無ししまった枝を持ついくつかの問題...以下のような状況を持っている
- Dは、我々の配信ブランチです
- Mはマスターブランチ
- Fであるプロバイダから変更を受信すると、FはM でリベースされ
- Dから
- コミットがM にマージされている機能ブランチであります
- M偶発Fのコミット(F2)が含まれ、M3というの復帰は
D D1-D2-D3-o \ \___________ \ \ M \-M1-M2-D2-F2-M3-D3-o \ / \ / F \-F1-F2-F3-o
をコミットしている今、私たちは再びMとFをリベースしようとしているが、我々はM3に戻っ変更F2が欠落しています最終的には。
D D1-D2-D3-o \ \___________ \ \ M \-M1-M2-D2-F2-M3-D3-o \ \ F \-F1-F3-o
分岐Fに我々は単に使用:
git pull --rebase origin master
をF2-M3へのリベースF1-F2-F3はF2を失う理由の説明はありますか?
Fのすべての変更を1つのコミットにスカッシングしてからrebaseを実行すると、F2に導入された変更がまだ存在します。
リベースインタラクティブモードを使ってMの履歴を書き直し、マージを維持しようとしました...私の考えは、偶発的なコミット(F2)とその復帰(M3)の両方を取り除くことでしたが、私が何かを緩めなかったという自信がある。
また、以下のバグ(https://git-scm.com/docs/git-rebase)に遭遇し、マスターの履歴を書き直すという考えを破棄しました。
によって提示ToDoリスト--interactiveが リビジョングラフのトポロジを表していない--preserveは、合流します。コミットを編集してコミットメッセージを再編集すると、正常に動作するはずですが、 再コミットを試みると、直観に反する結果が生じる傾向があります。
グラフは、状況、変更がそこに着いた方法がわからないのほんの一例です。しかし、あなたの説明は理解できます。スカッシュ回避策の後に既に支店で働いていた私の同僚は、私たちがこのような状況に遭遇したときにあなたの提案されたrebaseを試すでしょう。 – Clauds