web-dev-qa-db-ja.com

git-svnとの競合を解決するには?

git svn rebaseを実行していて、現在のgitブランチが「(no-branch)」になるときの競合を解決する最良の方法は何ですか?

51
csexton

git mergetoolを使用して、通常の方法で競合を表示および編集できます。競合が解決したことを確認したら、git rebase --continueを実行してリベースを続行するか、そのリビジョンを含めない場合はgit rebase --skipを実行します

26

git svn rebaseの実行中に、マージの競合が発生した場合は、次の点に注意してください。

1)リベースの実行中に何か問題が発生した場合、最終的に(no-branch)ブランチになります。

2)git statusを実行すると、作業ディレクトリに.dotestファイルが表示されます。これは無視しても安全です。

リベースを中止する場合は、次のコマンドを使用します。1

git rebase --abort

4)マージの競合がある場合:

  1. ファイルを手動で編集して競合を解決する
  2. 変更をgit add [file]でステージングします
  3. git rebase --continueでリベースを続行します2
    • Gitが「git addを呼び出すのを忘れましたか?」と尋ねた場合、編集により競合が何もしない変更に変わりましたgit rebase --skipに進みます

リベースが完了するまで、このプロセスを繰り返す必要がある場合があります。いつでもgit rebase --abortして、リベースをキャンセルして中止することができます。


1:--abortにはgit svn rebaseオプションはありません。

2:--continueにはgit svn rebaseオプションはありません。

3:これは非常に奇妙ですが、ファイルは、その特定のパッチの後、gitが同じであると見なす状態にあります。解決策は、リベースでそのパッチを「スキップ」することです。

88
csexton