これは(まあ、多分頻繁に)たまには私に何が起こる:gitの変更せずにコミット中間変更後の1
注:私がプッシュする前に、次のすべてが発生します。
私のソフトウェアプロジェクトは、新しい機能を必要とします。 動作するまでコード化してテストします。 私は新しい機能のための部屋を作るために持っていたので、私はgit add -i
を使用して、2つのコミットに変更を分ける:
A --- R --- F
がR
は、リファクタリングの変更が導入されてコミット、F
は、新機能のコードを追加します。
私は変更を分けて間違っていることに気づいたので、F
にあるものはすでに実際にR
に属しています。その逆もあります。 だから、基本的には、R
を台無しにされ、(F
の最終状態が完全であるのに対し)のテストに合格していません。
それを修正するには、私は一時的な枝にR
をチェックアウトし、すべてのものを修正します。 I git commit --amend
、今私は
A --- R --- F
\
\-- R'
だから今欠けていることすべてが新しいブランチにF
を移動されています。 はこれまでのところ、私の解決策は、(私は実際にブランチ名を使用しますが、あなたは私が何を意味するかを参照)git rebase --onto R-prime R F
を行うことでした。 それに伴う問題は、それは私が欲しいものを正確ではないということです:git
は私がF
と異なる場合がありますF'
をコミット与え、私はがR'
へF
R
間とを変更する移動したい理解しています。 はしかし、私はF'
は、その祖先を除き、F
と全く同じようにしたいです。 多くの場合、rebase
は、修正が難しい(エラーが発生しやすい)競合を引き起こします。
私はスナップショットF
のではなく、差分R
→F
を移動したいgit
を伝える方法はありますか?あなたの現在のHEADがR'
であり、それは(代わりにF
とR'
の代替ハッシュ)のようにする必要がありますと仮定すると、
それを変更したい
F
からのメッセージをコミットし、エディタを起動とにかく感謝! – user189