4

6 コミット前とその後のすべてのコミットで導入されたディレクトリの名前を変更しようとしています。これらのコミットはプッシュされていません。

私は何を試しましたか?

  • コマンドで使用git filter-branchしてみましたが、ディレクトリが存在しないため、mv old new以前のコミットで失敗します。HEAD~6
  • git rebase -i HEAD~6各コミットを編集しようとしましたが、 mv old newgit がファイルをロックしているため使用できず、Windows エクスプローラーで名前を変更することもできません。
  • 同じリベースを試しましたcp -R old new; rm -rf old; git add newが、これによりマージの競合が発生しHEAD~4ます。

このディレクトリが導入されたコミットは、このブランチの最初のコミット (ブランチは の 6 コミット前master) であり、ブランチから離れてからは触れていないことに注意masterしてください。

この質問も読みました。

これを行う最善の方法は何ですか?

4

3 に答える 3

2

https://git-scm.com/docs/git-filter-branch状態:

ツリー全体をサブディレクトリに移動するか、そこから削除するには:

git filter-branch --index-filter \
    'git ls-files -s | sed "s-\t\"*-&newsubdir/-" |
        GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
            git update-index --index-info &&
     mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
于 2016-09-19T14:47:21.290 に答える