2016-10-17 26 views
5

最初にマスターを別のブランチにマージしてからマスターに戻して間違えているのだろうかと思います。今、私がマージしたいGit:ブランチへのブランチのマージまたはブランチへのマスター

  mkdir git_merging 
      cd git_merging/ 
      git init 
      touch on_master 
      git add . 
      git commit -m "Initial commit on master" 

      git checkout -b x 
      touch on_branch_x 
      git add . 
      git commit -m "Initial commit on branch x" 

      git checkout master 
      touch on_master_again 
      git add . 
      git commit -m "Commit on master after branching" 

は別のコミットとそれぞれ、私は以下のブランチを作成するとします。通常、私は最初のxにマスターをマージすることを好む、その後、マスターへのxをマージする:

  git checkout x 
      git merge -m "Merge master into x" master 
      echo "test results" 
      git checkout master 
      git merge x 

私はマスターに戻ってマージする前に、物事をテストすることができますこの方法を、私は常に機能してmasterブランチを持っていることを保証します。私の知る限り、マスターに直接Xをマージに比べて、機能的な違いはありません。

  git merge -m "Merge x into master" x 
      git checkout x 
      git merge master 

実際には、私はしばしば、もっぱらしかし、バックマスターにマージするように見えるのリポジトリに遭遇します。私のアプローチに欠点はありますか?私はこれをしてはならない理由は何ですか?

答えて

8

これはかなり主観的な質問ですが、私はかなり客観的な答えを出すことができると思うので、私はそれをパスします。

greatマージしてからマージしてからマージしてから、マージしてからマージしてください。他の誰かがあなたが実装した機能を破った何かをコミットした場合(あなたが指摘したように)どうでしょうか?あるいは、あなたが行った同じコードを誰かが修正して、マージの競合を引き起こした場合はどうしたらよいでしょうか?私は実際にあなたの支店にマスターを戻すことを提案します非常に頻繁に。これは、マージ競合を解決する1日半を費やす必要がなくなるだけでなく、ブランチが大きすぎるという兆候かもしれませんが、それは別の話ですが、プロジェクトの変更や進化する。

rebaseあなたのコミットはマスターの上にあるべきだと言う人もいます。私の短いバージョンは次のとおりです。開発プロセスの早い段階で、機能が完了していなくてもプルリクエストを開くように促します。これは、コードをリモートサーバー(GitHubなど)にプッシュする可能性が高いことを意味します。あなたのコミットをリベースするには、書き直されたgitの履歴をプッシュし、強制的にプッシュする必要があります。フォースプッシュはワークフローの決定が悪いため、コミット履歴に(ほとんど)恒久的なダメージを与える可能性があるため、避けるべきです。

はい、マージする前にマスターからマージし、マージする前にマージしてください。

require branches to be updated before merging -- GitHub

:あなたはGitHubのを使用している場合は、私もマージする前にマスターとの更新支店を強制する新しい保護支店が に機能を使用して励まします
関連する問題