2017-06-22 11 views
0

私はこの難しさにたくさん直面しているので、私はgitがそれのための解決を持っているかどうか疑問に思っています。Gitの機能ブランチからupstream/masterをorigin/masterにマージするには?

  • 私はアップストリームレポを持っています。
  • 私はそれを捨てて、それをoriginと名付けました。
  • 私はmasterブランチを持っています。
  • 私はfeature_1というブランチを持っています。

私は開発中にfeature_1ブランチに入っています。私はそれをリベースしたいとき、私は次の手順に従っています:

$ git checkout master 
$ git fetch upstream // To see is there any change although pull works as well 
$ git merge upstream/master // in case there is a change 
$ git push origin/master 
$ git checkout feature_1 
$ git rebase master 

だから、私はfeature_1ブランチから上流にフェッチすることができています知っているが、私は疑問に思って私はfeature_1ブランチからorigin/masterupstream/masterをマージして、リベースすることができていますそれ(feature_1ブランチを残さずに)?

ご協力いただければ幸いです。ありがとう。

答えて

0

あなたがmasterブランチの最新のリモートバージョンでfeature_1をリベースしたい場合は、単純に次の操作を実行できます。

git checkout feature_1  # switch to feature_1 
git fetch upstream   # update upstream/master (and other tracking branches) 
git rebase upstream/master # rebase on latest master 

私は、リモートoriginがここで何を意味するのか分からない、でも私は知っていますgit push origin/masterを行うことであなたが意図するもの。これはリモート追跡ブランチをプッシュしようとしているようですが、おそらくあなたが意図していないものです。

どんな場合でも、最新のリモートブランチを実際にそのブランチから離れることなくリベースできます。です。

+0

おかげでTim、 'Remote'は会社のレポです。 「原点」はPRを送るためのものです。 – Hesam

+0

もう一度、 'git push origin/master'が意味することは分かりませんが、私の答えの大半はどちらかといえば変わっていないと思います。 –

+0

ああ、そうです、あなたは正しいです。これは私のリベースのケースでは必要ではありませんが、変更の記録(新しいブランチを作成するため)が必要です。ありがとう。 – Hesam

0

別のワークツリーでorigin/mastermasterにマージすることができます(これには最新バージョンのgitが必要です(man git-worktreeを参照)。

worktree1 <feature_1> $ 
worktree2 <master> $ git fetch && git merge origin/master 
# this rebases onto new master: 2 worktrees share one set of branches 
worktree1 <feature_1> $ git rebase master 
+0

ありがとうJokester。あなたは 'worktree1 $'から 'worktree2 $'にチェックアウトしていると思います。私はチェックアウトせずに 'feature_1'ブランチから' git fetch && git merge origin/master'を行うことができるのでしょうか? – Hesam

+0

これは決済を必要としません(私はあなたがチェックアウトを避けたかったと思います)。 'worktree1'と' worktree2'はそれぞれ2つのブランチの2つの作業ツリー(すなわちディレクトリ)です。 – Jokester

関連する問題