2016-11-26 17 views
1

私はちょうど髪の毛のリベースをやったことがあります(誰かがブランチで数週間働きましたが、リベースしませんでした)。私が使っていた "人間が判読可能な"フォーマットは数多くのIDであり、参照。git rebaseの後に新しいコミットが発生した場合の対処法?

私はこのリベースを行っていましたが、リベースの結果を押し出すチャンスがある前に、ブランチに2つのコミットが現れました。

リベースをやり直すかマージに頼らずに、それらの新しいコミットを取得するのがベストプラクティスですか?私の最初の考えは、チェリーピックアップでこれらの新しいコミットとgit push -fを選ぶことができるということでしたが、それは嫌なものでしょうか?

+2

リベースは、チェリーピックの自動化されたシリーズに過ぎません。したがって、これらの余分なコミットをチェリーピックアップすることができます。一般的にこのような共有ブランチをrebaseするのは失礼です。同じ理由で、このように再配置されるブランチに対して予告なしにプッシュするのは失礼です。あなたと他の人はここでプロトコルに合意する必要があります。これはリベースされ、誰もがそれに備えなければならないのですか、永久にコミットし、誰もリベースする必要はありませんか、 :-) – torek

+0

ええ、相手は、rebaseが来ていることを知っていました。 (合併に備えて)彼は自分が支店にいたことに気付かず、無関係な仕事を続けていました。 –

答えて

2

コミットを再度リベースする必要があります。

唯一の問題は、git rerereを有効にしていないため、競合の解決を再作成する必要があることです。

まあ、...あなたはrerere-train.sh scriptと一緒にいる必要はありません。 Tristan Rousselによって
を参照してください「Do you even rerere?」:この最も単純な形で

は、スクリプトが競合を探すためにコミットコミット指定から始まり、すべての親を通過します。

これにより、これらの過去の競合解決を記録し、それらを再度実行せずに再度リベースすることができます。

-1

cherry-pick特定のコミットをマージするだけですが、ブランチにマージする必要のあるコミットが多数ある場合は、rebaseにするのが良いでしょう。

異なる人には異なるベストプラクティスがある場合があります。私は私の枝が最新で、それが作成されたリモートブランチからであることを確認することができるよう

  1. git pull --rebase:私は、以下に従ってください。
  2. git push origin :feature_branchこれは、リモート機能ブランチの削除を削除します。私はあなたの練習を知っているか、私に何かを提案するために喜んでいるでしょう台無しに何も:) :) :)
  3. ついにgit push origin feature_branch

をしません私は単にgit push -force feature_branchを行うことができます知っているが、私はそのgitのを確認することにしたいけどより良い。

+0

あなたは何が起こったのか分かりません。私はリベースをやりました。しかし、誰かが誤ってブランチにコミットした。私は桜を選ぶのが大丈夫か賢い方法があれば尋ねていました。 –

+0

私がチェリーピックを意味するものは大丈夫ですが、明確な歴史のために私の意見は常にリベースを使う方が良いです。練習を続けることはできますが、gitワークフローが表示されている場合は、修正プログラムにチェリーピックを特別に使用していますが、明確な履歴リベースを持つのが最適です。あなたが再び心配している場合は、矛盾を解決しなければならない場合は、VonCの回答が解決策です。 –

関連する問題