2

Windows で無効な名前のファイルを含む git リポジトリがあります。

foo/bar/baz|quux

再起動せずに問題を解決したかったので、次のコマンドを試しました。

git clone -n ssh://example.com/home/me/repo.git
git mv "foo/bar/baz|quux" "foo/bar/baz-quux"

しかし、私が得るのは次のとおりです。

fatal: bad source, source=foo/bar/baz|quux, destination=foo/bar/baz-quux

Linuxでそのコマンドを実行し、チェックアウトしたレポ(git cloneなし-n)を使用しましたが、 id は魅力的に機能したため、fatalエラーはファイルがWindowsでチェックアウトされていないことが原因であると思います(確認できません)。

git mv --index "foo/bar/baz|quux" "foo/bar/baz-quux"では、インデックスのみを変更し、ファイルがディスク上にないという事実を無視するように実行するにはどうすればよいでしょうか。このオプション--indexは では使用できません。git mv試してみ-fましたが、同じメッセージで失敗しました。

4

1 に答える 1

2

私は解決策を見つけました:

git clone -n ssh://example.com/home/me/repo.git

# Create foo/bar since the checkout -n didn't create it
mkdir -p foo/bar/

# Create the new file
git show "foo/bar/baz|quux" > "foo/bar/baz-quux"
git add "foo/bar/baz-quux"

# Remove the old file in the index
git rm --cached "foo/bar/baz|quux"

git commit -m "Moved file with invalid name."

これにより、無効な名前のディレクトリを簡単に移動できないことに注意してください-git show origninal-name > new-name各ファイルに移動する必要があります(ただし、ファイルが多数ある場合は、小さなシェルスクリプトが役立ちます).

于 2013-09-25T13:34:23.590 に答える