2011-02-08 12 views
1

私は私のリモートリポジトリから最新の21回のコミットを追加するgit rebase --ontoは競合を引き起こします - なぜですか?

git rebase --onto master myremote/master~21 myremote/master 

をしようとしています。

gitは私には矛盾があると言いますが、それはどうやってできますか?

私の理解では、21のコミットをマスターの上に適用するだけです。どうやって紛争が起こるのですか?

ありがとうございました!

私は何とか私のgit-svnリポジトリ(リモート)を台無しにしているので、私はそれをやっています、そして私は転覆にコミットすることができない21のコミットがあります。だから、私はそれらの21のコミットを追加している新鮮なgit-svnクローンで試しています。

答えて

0

場合は競合があります:マスターがmyremote/masterにいないことにコミットしている

  • これらのコミットには、最後のコミットを含む共通ファイル/変更が含まれます。myremote/masterコミット。

何とか新鮮git-svn cloneは以前のgit - のsvnレポとは異なるSHA1を持っている場合は、そこには近い共通祖先がなく、紛争の可能性がはるかに高いということです。
リベース中の競合の説明については、「How to identify conflicting commits by hash during git rebase?」を参照してください。

git checkout -b tmp myremote/master # local tmp branch from myremote/master HEAD. 
git merge -s ours master    # ignore completely master content 
git checkout master 
git merge tmp      # fast-forward to tmp HEAD 

あなたがmyremote/masterをフェッチする前に、ローカルmasterの変更を行っていなかった場合、これは動作するはずです:myremoteするには、ローカルのマスターをリセットする


一つの方法は、/マスターすることです。

+0

わかりません。なぜマスターの問題にコミットしますか? rebaseは現在のブランチ(ここではmyremote/master)を(ここではmaster)にリセットしています。だから、マスターの上にすべてを適用する必要がありますよね? – Andy

+0

言い換えれば、共通の祖先や駄目をgitチェックすることなく、それらの21のコミットを単純に適用する方法はありませんか? – Andy

+0

@Andy:リベース中の競合については、http://stackoverflow.com/questions/2118364/how-to-identify-conflicting-commits-by-hash-during-git-rebaseを参照してください。あなたの場合の質問は、 'myremote/master〜22'と同じ' master/HEAD'(リベース前)のSHA1ですか?もしそうでなければ、共通の祖先はさらに「マスター」の歴史の下にあります。 – VonC

関連する問題