2009-10-28 7 views
9

私たちのチームは純粋にマージベースのgitワークフローを使用しています.はすべてのチームメンバーにすべての作業を午後一回サーバーに送り、サーバーのレポを再設定する夕方。単純なマージコミットを取り除くために完全なgitヒストリを自動的に書き直します

私が思うのは、すべてのコミットが同じブランチセットにあり、パラレルコミットの数が所定のしきい値以下である限り、私はシリーズをリベースしたいと思います。マージコミットを削除します。しかし、私は提案に開放されていますか?

誰でもこの方法を知っていますか?

答えて

12

私の意見では、歴史を書き直してみると、「見栄えが良くなる」という誘惑を避けるべきです。本当に意味がありません。歴史はそのまま現実をより正確に表現しており、gitのレポートツールはすべて、少しのマージでも役立つように設計されています。

多くのマージを表示することに興味がない場合は、多数のレポートタスクからそれらを抑制することができます。あなたは(おそらくすべての開発者がresetに持つように引き起こして、リベースの夜を)提案している何

git log --no-merges 

は仕事のために仕事を作成するように思えます。

+1

良いフォーカスのための+1 - "現実の噛み付き"。 Gitはそのような巨大なツールスペースと非常に多くのオプションを提供しています。スマートなものとそうでないものを知るのは難しいでしょう。私は仕事のために仕事を作っていないということを確信しているので、おそらくあなたのアドバイスに固執するでしょう。 – krosenvold

5

私はこのことがいかに簡単かわかりません。 rebase -iを実行すると、すべてのマージが無視されます。マージはコンフリクトなしでマージに成功しますが、競合が発生した場合は停止して待機します。

rebase -i -pと呼び出すと、マージが維持されます。マージは、ユーザーが実際のマージを行ったときに必要ですが、そうでない場合は完全に失われます。

恐らく、2つのコマンドのいくつかのシーケンスは、あなたが望むときだけマージを保存して、この場合にジョブを完了させることができます。

私はチャールズに同意しなければなりませんが、現実を反映した歴史を持っていることは、それを「かわいく見せる」よりもはるかに貴重です。実際、あるコミットは他のことを知らずに行われ、ソースコードの場合、これは何かが間違っていた可能性があることを伝えることができます。

私たちのチームは常に--rebase(例えばgit pull -r)で引っ張ってと間違って何純粋にマージベースのGitのワークフロー

を使用していますか?フラットなトポロジが必要な場合、最も簡単な方法はリベースするときにマージすることではありません。

また、「マージがクリーン」の場合にのみ、フラット化したいとします。私はちょうどここに推測していますが、私はgitレコードがデフォルトコミットメッセージ内のノート以外の事実の後で競合するとは考えていません。

+1

--rebaseを使用してプルするための+1。 – mskfisher

関連する問題