1

私はしようとしています

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

私のリモートリポジトリから最新の21のコミットを追加します。

gitが私に言っているのは、競合があるということですが、それはどのようにして可能でしょうか?

私の理解では、21のコミットを取得し、それらをマスターの上に適用するだけです。どうすれば競合が発生する可能性がありますか?

手伝ってくれてありがとう!

どういうわけかgit-svnリポジトリ(リモート)を台無しにしたので、私はそれをやっています、そして私がSubversionにコミットすることができない21のコミットがあります。そこで、21個のコミットを追加する新しいgit-svnクローンを試してみました。

4

1 に答える 1

0

次の場合に競合が発生します。

  • マスターには、にないコミットがありmyremote/masterます。
  • これらのコミットには、最後の21回のmyremote/masterコミットの1つに共通のファイル/変更が含まれます。

どういうわけか、フレッシュgit-svn cloneが以前のgit-svnリポジトリと異なるSHA1を持っている場合、密接な共通の祖先はなく、競合の可能性ははるかに高くなります。リベース中の競合の図については、「 gitリベース中にハッシュによって競合するコミットを識別する方法
」を参照してください。


ローカルマスターをmyremote/masterにリセットする1つの方法は、次のとおりです。

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

masterフェッチする前にローカルで変更を加えていなかった場合myremote/master、これは機能するはずです。

于 2011-02-08T11:57:56.423 に答える