2016-08-01 9 views
0

私はこの状況に数回ぶつかり、他の人がこれをどのように扱うのか不思議です。きれいなブランチとのリビジョンの競合とその処理方法

はのは、私は次のようになり、リモートサーバー上の2つの支店を持っているとしましょう:

branchA: a123-->b123-->c123-->e123-->f123 

branchB: a123-->d123-->b123-->c123 

のはd123branchBb123c123前にコミットされたと仮定しましょう。ある時点で、branchBに必要な作業があるため、branchBbranchAをリベースする必要があります。同僚がそれを行い、競合をきれいにし、すべてがうまく、branchBがリモートサーバーにプッシュバックされます。私の地元の支店は今きれいにして、検索に使用branchB次のようになります。当然のことながら、私はので、私は仕事を持っている私の地元branchBbranchBからリモートサーバに何があるかリベースする必要が

local branchB: a123-->d123-->b123-->c123 

。しかし時には、私は地元の枝に葛藤がある状況に遭遇し、gitは通常はリベースが働くので、それぞれを通過するように求めています。これは私が実際に同僚によってbranchBにリベースされたbranchAからの履歴を持っていないためです。

問題は、この点がリモートbranchBにあり、実際に修正するための競合がない限り、私が行ったすべての作業を知っていることです。それぞれを通過することは時間の無駄になるでしょう。私はちょうどリモートbranchBの私のローカルヒストリーを置き換えるには履歴が欲しいです。

インターネットを磨くことは、いくつかの問題を解決する方法があるようですが、あなたが望む場合には、どちらが最善か、Linusの承認を得ているかはわかりません。私は実際に私が探している答えを見つけたかどうか分からない。

一部の回答では、リベースを使用し、theirsオプションを使用するか、別の戦略を選択する必要があるとの回答があります。私はいくつかの答えは、--skipがここに適切だと言うと信じています...しかし、git --skipのように、文字通りはスキップしてしまうことがあります。また、git rebase -X theirsのようなtheirsオプションを使用すると、実際に私のためにSHAを書き換える場合があります。

だから、私の質問はどのように私は、リモートブランチ上での歴史を持つ私のローカルブランチに歴史を両立だろうというときされています。私の地元の支店で

  • すべてがリモートブランチに既にありますか?
  • 私のブランチは清潔で、保留中の変更はなく、実際に修正するための矛盾はありませんか?
  • 本当に私の望むのは、自分のローカルブランチの履歴をリモートブランチの履歴に置き換えることです。本当に

答えて

1

私が望むすべてはただ、ハードリセットを行うリモートブランチヒストリに何があるか

で私の地元の分岐履歴に何置き換えることです:これは面白いです

git checkout branchB 
git fetch 
git reset --hard origin/branchB 
+0

をアプローチ。そうでなければこれを行う方法に関するアドバイス? – Sethen

関連する問題