2017-05-23 6 views
1

ブランチで作業している場合は、最初にmasterを基にしたfeature-fooとしましょう。そして私はそれに多くのコミットを続けています。その同時にマスターをマージする方法

  • 、私の同僚がfeature-bazに取り組んでいる、マスターにそれを自分のブランチをマージすることを決定。

  • 次に、feature-fooは現在現在マスターにある特定の変更に依存していることがわかります。私は私のfeature-fooブランチにマスターをマージし、私は戻ってマスターにそれをマージする準備ができていますが、その後、私の同僚は、すでに習得して他のいくつかの変更をマージし、今私は競合を持っている、とすることができますいくつかの点でfeature-foo

  • を構築し続けるだろう私のfeature-fooを簡単にマージすることはできません。

  • masterをfeature-fooにマージするのではなく、masterの新しいブランチを開始してfeature-fooをそのブランチにマージすると、競合を解消する方が簡単なようです。だから、私はfeature-foo-2(現在のマスターからそれをベースにして)を作成し、次にfeature-foofeature-foo-2にマージして、途中で競合を修正します。

  • 今、私のfeature-2ブランチは競合がなく、マスタにマージする準備が整いました。

私の質問は:多分私は何か間違っていますか?それをすべて処理する簡単な方法はありますか? マスターの変更を処理する最良の方法は何ですか? 他のブランチを私のものにマージする前に、いつもrebaseとsquashを試してみるべきですか?明らかに、他のブランチからのものをマージした後に、コミットを潰すことはお勧めしません。

私たちはgit-flowを使用していません。私が理解しているように、私は自分の利益のためにそれを使うことはできません、グループ全体はそれを使うことに同意しなければなりませんか? あなたの考えは?

upd:もちろん、私はorgin/master(私たちのgithub repoの設定方法です)に入ることはできません。マスターへのマージはプルリクエストを経由する必要があります。 あなたは、私が地元支部で何かを小さくしても、PRを受け入れるためには、マスターをマージ/リベースしなければならないことが分かります。しかし、その時までにはすでにマスターがさらに進化していて、現実には私のブランチをマスターにリベース/マージするのが簡単になりました。しかし、私は原点にマスターをプッシュすることができないので、私は一時的なブランチを作成して(マスターに基づいて)、その上に私の変更をマージ/リベースし、その一時的なブランチに基づいてPRを作成しなければなりません。

+1

あなたの質問は少し広いです。リモートの 'master'をブランチにマージして最新のものにすることは何も問題ありません。 –

+0

合意。それは個人的な味についてです。同様に、自分のローカル支店で働くとき、私は 'merge'より' rebase'を優先します。 –

+0

@EvenYoungそうかもしれないが、それは答えだろう - 私の枝にマスターをマージするのではなく、私はいつもマスターから自分の枝にリベースしようとするべきだろうか? – Agzam

答えて

1

機能が十分に小さい場合は、チェックインする時間があるときにリバースして「早送りしない」(--no-ff)オプションをマージすることを選択します。重複するブランチがないことを確認してマスターをきれいに保つことをお勧めします。 FYI

enter image description here

、あなたのツリーと、すべての枝を可視化する:

git log --oneline --graph --all --decorate=short 
+0

私の問題は、私のブランチがほとんど追加しなくても、私がマスターにマージする準備ができたら、マスターが大幅に変化することです。そして今、私のフィーチャを(他の方法ではなく)マスターにマージ/リベースする方が簡単です。しかし、私はマスターに直接マージすることはできません。プルリクエストを介して行う必要があります(これはGithubの設定方法です)。 これで、オフマスターの一時的なブランチを作成し、自分のものをマージ/リベースし、その一時的なブランチに基づいてPRを発行する必要があります。 そしてそれが単純化できるかどうか疑問に思っていました。 – Agzam

+0

ブランチがほんの少し追加され、マスターが時間の経過とともに大きく変化する場合、それはマスターにマージする前にマスターに最初にリベースするのに最適な候補です。なぜ私が最初にマージしてからリベースするのか分かりません。 – pixelbits

+0

tempブランチを作成して(マスタの先端から離れて)、その変更をマージすると、ブランチからマスタへのリベースと同じことが本質的に実行されます。したがって、tmpブランチを作成するのではなく、マスターにリベースし、競合を処理し、devブランチをリモートリポジトリにプッシュしてプルリクエストを送信します。かなり短く – pixelbits

関連する問題