2016-08-02 9 views
1

私は2つのブランチを持っていますが、それらを「開発」と「安定」と呼んでいます。ほとんどの場合、私は開発から安定にマージしますが、時には逆の方向にマージする必要があります。たとえば、誰かがスクリプトや設定ファイルを変更し、これらの変更を自分の開発ブランチに入れたいとします。2つのブランチ間で前後にマージすると変化が失われる

ほとんどの場合、マージはうまくいきますが、いくつかの機会に、私はgitが最近の開発ブランチの変更を安定したブランチからの古いバージョンに戻そうとしていることに気付きました。なぜこれが起こるのだろうか?私は住人のgit教祖と話をした。彼は、前後に合併するのは、おそらく理由はあるが、彼はそれがどうして起こるのかを説明することはできないと言います。

たとえば、私は--no-commitを使用して安定版から開発版へのマージを行います。私はファイルを見ていますが、開発ブランチには最近の変更があり、開発と安定の両方で古い変更があります。しかし、gitは何らかの理由で新しい変更を元に戻すことを主張しています。

+3

1つのブランチから別のブランチにマージしてから戻ってくると、この現象が発生するはずはありません。実際、このような手順は比較的一般的であり、以前は何の問題も生じていませんでした。これが起こったときにマージ競合があったことがありますか?あなたは[mcve]を提供できますか?少なくとも、それを少し絞り込み、適切な 'git log'と' git diff'の出力を貼り付けてください(もちろん、適切に消毒されています)。 –

+0

'git merge --no-commit --no-ff安定した開発; git merge --abort'は '自動マージがうまくいった。要求されたようにコミットする前に停止しましたか? –

答えて

0

Besically development分岐実行

git rebase stable

にそれが何をするかしながら、すべて一緒に全体の問題を回避するためには、あなたのdevelopmentブランチのコミットスタックを取り、彼らにTOP ON 返信ですstableブランチ。この方法では、最新のdevelopmentブランチを取得し、不要になるのを避けるためにmergeをコミットします。

関連する問題