を見つけることです:私は、根本的な問題(別のマシン上で異なるコードを必要とする)内に近づい推薦します私はこれが最終的にあなたの問題を引き起こすと思われるので、より正式な方法。言語やツールに応じて、それは簡単ではないかもしれません(もちろん、言語やツールなどを知らなくても一般的なソリューションを提供することはできませんが、価値があるかもしれません)。
でもねえ、ここにあなたがそれを固執作ると思います方法です、あなたの現在のアプローチは、あなたのために正常に動作するために起こっていると仮定すると:変更フォームをプッシュする
あなたはこのような状況で
X --- X <--(origin/master)
\
A --- B --- C <--(master)
を開始B
およびC
であるが、A
ではない。さらに、A
、B
、およびC
のすべての変更に基づいてローカルで作業を続けたいとします。物事はのようにスムーズに彼らができるように実行するようにするに
あなたはドン(あなたがD
を持って、それをプッシュしたいとき)以降のように、あなたはまた、」、GitはB
とC
からの変更はの世話をしていることを実現したいと思います無意味な紛争解決の束をやってしまう。
まず、対話型のリベースを行います。 A
を削除する代わりに、TODOリストの最後に移動します。この操作の後、あなたは持っている必要があり
X --- X <--(origin/master)
\
B' --- C' --- A' <--(master)
(技術的にはA、B、およびCは、まだうろついていると、あなたがする必要がある場合は、それらに戻って得ることができる。しかし、すべてがうまくいけば、あなたがする必要はありません。
今度は、master
をコミットしてプッシュしてから、に戻ってmaster
をプルします。
X --- X --- B' --- C' <--(origin/master)
\
A' <--(master)
を得
は
git reset --hard HEAD^
git push
git reset --hard [email protected]{1}
、必要に応じて繰り返して、続けていく
これはうまくいきますが、私が個人的に好きではない理由が2つあります。 (1)偶発的に変更をコミットしないように注意する必要があります。これにより、ワークフローの任意の場所で余分な作業が発生する可能性があります。 (2)私はちょうど長寿命のひだが好きではありません。短期間の休憩を使わないのであれば気にしないだろうと思っていますが、私は長期的な休みを自分のやり方で得ることができます。しかし、ymmv –