私は自分のsvnリポジトリをgitに移行しましたが、何らかの理由でトランクフォルダが残っています。私は履歴ラインを傷つけることなくこれらのフォルダを削除したい。トランクフォルダを削除するGit filter-branch
これは、現時点では私が持っているgitリポジトリである:
- My repository
-- Project1
--- trunk
---- src
---- somefile.txt
---- someotherfile.cpp
---- andanotherfile.cpp
、これは私が持っているしたいものです。
- My repository
-- Project1
--- src
--- somefile.txt
--- someotherfile.cpp
--- andanotherfile.cpp
私は、コマンドフィルタ分岐が使用されていることを知りましたしかし、私は、thisとthisを除いて、私の場合に合った例を見つけることができませんでしたが、そこにさえ、私はちょっと混乱していました。誰かが似たようなものに遭遇し、それらが解決策であることを確認できますか?
ありがとうございます。
更新:だから私は、次のコマンドは、行為を行うためにほとんどの時間を使用していることを知った:
git filter-branch --index-filter \
'git ls-files -s | sed "s-/trunk/-/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
は確かに、私は、sedの行をチェックし、それがあろうと私に教えてくれありませんトランクを外し、内側のものを上位ディレクトリに移動します。ただし、実行は次のエラーを返します。
../myrepository/.git-rewrite/t/../index.new': No such file or directory
このエラーが発生する理由はわかりません。私はそれを見て、それはのように、HEAD
の前の数字、このコマンドに追加する必要があるようです。しかし、私はこれが何であるか(私はリビジョン番号、おそらく、なぜですか?)、または私が何であるかを知りません。助けていただければ幸いです。ほぼ手に入れました!
このコマンドをどうしたらよいですか? 'cd:Project1にはcdできません、' 'cp:can not stat trunk/* ':'/usr/lib/git-core/git'という結果のファイルやディレクトリはありません。 -filter-branch:361:/ usr/lib/git-core/git-filter-branch:can not open ../commit:そのようなファイルはありません。 '../map/f4a19a767a46968b29e129c6d811b1cd3bd56eec:ディレクトリが存在しませんでした。 。 –
それはトランクがsvnの機能だと思われますか?申し訳ありませんが、私はsvnについて少し知っています。歴史はどうですか?とにかく、あなたはレポをバックアップし、可能な方法を試してみることができます。 – ElpieKay
したがって、Project1フォルダはルートコミットからリポジトリに追加されませんでした。Project1を含まないコミットを書き直すと、cd、cp、rmは失敗します。もっとテストをします。 – ElpieKay