私の長期ブランチ(「メトリック」と呼ばれる)を私の「トランク」ブランチの最新バージョンにリベースすることに問題があります。目標は私の変更を元に戻し、SVNにコミットすることです。移動したファイルでgit-svn rebaseを解決するには?
リベースには75ステップあり、ステップ40では、svnに再配置されたファイルに重要なソースコードの変更が適用されています。
特に、私は/java/**/*.java内のファイルに多くの変更を加えました。一方、これらのファイルは/src/main/java/**/*.javaに再配置されました。
gitのステータスは示しています
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# added by them: java/StripesResources.properties
.... (many files like this)
# both deleted: src/StripesResources.properties
.... (many files like this)
# added by us: src/main/java/StripesResources.properties
.... (many files like this)
この状態で900以上のファイルがありますが、私はそれらをマージする何をしますか?それらのすべてが実質的に変化するわけではありません。
ファイルの「それらの」バージョン(自分の変更)を「私たち」の場所に移動しようとしましたが、動作していないようです。
ここでは 'git mv'を使用する必要がありますか?
ありがとうございました。
これは難しい問題のようです。私はあなたのブランチをマージする前に、あなたが行った更新が適用される前にファイルがトランク内の新しい場所に移動されるように、そのコピーの履歴を変更しなければならないかもしれないと思います。 – antlersoft
残念ながら、ファイルは正しい場所にありません。これらの変更をすでにトランクから私の「メトリック」ストリームにマージしているので、ファイルはすでに正しい場所にあります。しかしgitはそれを認識していないようです。 – JBCP
マージがどのようにクリーンアップされるかは重要ではありません。もしあなたがそれを行い、インデックスに変更を加えることができれば、リベースを続けることができます。この時点でgitが本当に混乱している場合は、2つのツリーのコピー(たとえばdiff3を使用)からrebaseツリーにファイルごとのマージを行い、git mvを実行するスクリプトを作成する必要がありますマージされたファイルをどこに置くべきかを指定します。 – antlersoft