2017-01-07 4 views
0

私はintegrationブランチに基づいて作成したbug-fix-1というGitブランチで作業しています。別のブランチがintegrationブランチにマージされました。その後、変更を元に戻しました(すべてGithubで行っています)。GitHubは、復元されたプル要求からの変更を認識しません

bug-fix-1integrationにマージするための新しいプルリクエストを作成すると、私はbug-fix-2からの変更を見ることが期待されます。しかし、いいえ、私はそれらのいずれかを見ることができない、プルの要求は、私がbug-fix-1上で行った変更を示すだけです。

bug-fix-2から私のブランチへの変更をどのように取り込み、それらを一緒にintegrationにマージするのですか?

答えて

4

これはGitの興味深い機能です。何が起きているのか分かったら、悪いことではありません。

ギフトトラックはコミットハッシュでコミットし、履歴からはhot-fix-2が既に存在します。 Gitはリバースが適用されていることも知っていますが、実際には元のコミットをバックアウトしているとは見えません。代わりに、それは同じdiffを逆順で適用する別のコミットです。また、それ自身のコミットハッシュもあります。

Gitが変更を確認できるようにするために、あなたはいくつかの選択肢のいずれかを持っている:

  1. は復帰を戻します。それが奇妙なように、それは動作します。これは、reverse diffを含む新しいコミットを導入することを示します。これは、コミット統合ブランチ上に存在しない、ので、Gitは持ち込まれるの変化としてそれを見ることができます

  2. あなたは桜、元がコミット選ぶことができますが、特別なオプションが必要になります:。

    git cherry-pick --keep-redundant-commits COMMIT_HASH 
    

    ここで、COMMIT_HASHは元のバグ修正を導入しています。

これを行うのに役立つ他の方法もありますが、もう少し複雑で、git rebaseを使用しています。私は上記のテクニックがおそらく最も単純だと思います。

+0

私は個人的に 'git checkout bug-fix-2 && git rebase integration'を好んでいますが、マージ競合がある場合は...(1)が最適なオプションかもしれません。 – Pockets

+0

それは動作しません。統合ブランチにすでに存在しているため、コミットが破棄されます。 – jszakmeister

関連する問題