2013-02-28 12 views
6

私は自分の開発ブランチで開発をしてから、プロダクションにプッシュする準備ができたらマスターにマージするのが好きです。私がマスターブランチに何かをコミットしない限り、すべてがスムーズに進みます。マスターブランチと開発ブランチを同期して正常に維持するには? GIT

しかし、開発ブランチで変更されたものと競合する何かをマスターブランチにコミットした状況が出てきました。開発ブランチをマスターにマージすると、私は競合を解決する必要があります。大したことではありませんが、開発ブランチがマスターブランチにすべて入っていることを確認するために(私は開発が最新であることを確認しています)、マスターブランチをマージして、再度競合を解決する必要があります。

私はリベースが一般的に悪いと聞いていますが、特にあなたが一般公開しているものについては特にそうです。

このタイプの設定を管理するより良い方法はありますか?

答えて

2

の方法は、他の方法でラウンドです。

ブランチのマージと処理に関してはgitはすばらしいですが、3ウェイ差分/マージツールを使用した手作業で面倒な作業以外の方法はありません。

また、以下の彼の答えで@CHaoが言ったことをするのに役立ちます - 頻繁にマージし、小さなマージ、あなたはほとんど紛争マージの大きな状況があります。

0

私が言うことから、開発はすべて新しいものが起こる場所です。そうだとすれば、開発の分岐(機能分岐)。その支店で働く作業が完了したら、フィーチャーブランチに統合して最新の状態になっていることを確認してください。開発ブランチをチェックアウトし、フィーチャーブランチをそのブランチにマージします。あなたのチームの人々が開発ブランチに機能を追加し続けると、ある時点でマネージャーはokay, we're releasingのようになります。その時点で、マスターを開発してマージします(ただ誰かがマスターで不正なコミットを行った場合)チェックアウトマスタとマージがそれに展開されます。

うまくいけば誰も開発や習得に直接コミットしません。それらの2つはマージされるべきです。また、あなたが機能を開発している間とマージした後にテストを受けることを願っています。

まではrebaseですが、はい、ブランチを共有してからはしません。したがって、この場合は、共有されているため、開発ブランチでは実行しません。

  1. マージマスターマージしながら、その

は、すべての競合を解決した直後にマスターする

  • マージDEVをdevのために:私はそれを行うだろう

  • 5

    マスターから開発ブランチに定期的にマージし、競合を解決します。 (これを定期的に行っている場合は、一般に競合はごくわずかです)。

    マスターとのマージバックが発生するまでには、開発は全く競合しません。

    5

    ここでは、技術的に間違っていること以上にあなたに影響を与えるいくつかの誤解があるかもしれないと思います。

    まず、通常、マスターブランチに直接コミットしないでください。あなたの状況を説明した方法から、それが起こっているかどうかはわかりませんが、もしそうなら、それをしないようにしてください。

    何かが完全にマスターにマージできない場合は、マスター自体で問題を解決しないでください。代わりに、機能ブランチで問題を修正する必要があります。問題を修正したら、マスターに完全にマージすることができます。

    リベースは、遠隔地のリポジトリにプッシュするまで完全にリベースすることができます。リモートリポジトリに何かをプッシュすると、あなたは他の人の歴史を台無しにしているので、あなたはrebaseしたくないし、gitは本当にあなたのためにそれを解決することはできません。だから、リベースを恐れず、いつ使うべきか、それを使用しないことを知っているだけです。

    問題を解決するためにここでリベースすることができます(また、問題のブランチをリモートでプッシュしなかったと仮定します)。クリーンにマージできないフィーチャブランチをマスタにリベースし、マスター。これにより、そのブランチで問題を解決するように強制されます。それが解決されたら、マスターへのマージは簡単です(マスターがその間に再び変更されない限り)。そして、あなたはきれいにマスターにマージすることができます。

    gitには多くのチュートリアルが用意されていますし、役立つ素晴らしいコード例もあります。ここでは、より古典的なものの1つですが、私はここで説明したワークフローがうまくいくと考えています。 http://nvie.com/posts/a-successful-git-branching-model/

    私はそこでワークフローを半自動化しようとする 'git flow'という名前のbashスクリプトセットを推奨していません(これらのスクリプトは試してもうまく機能しませんでしたが)そこに記載されているうまく機能

    0

    私は

    git checkout master 
    git reset --hard dev 
    

    んので、マスターが正確DEVになります。マスターに修正プログラムを提出したい場合は、dev rebaseを忘れないでください。

    関連する問題