2

Linuxマシンで行われたコミットをWindowsマシンにプルしようとしています。このエラーメッセージが表示されます:

error: git checkout-index: unable to create file my/folder/name/: (Invalid argument)

Linuxマシンでは、 :とと呼ばれるそのような「名前」フォルダが2つあるように見えました。それらを統合して再コミットした後でも、同じエラーメッセージが表示されます。'name''Name''name'

Windowsではgitバージョン1.7.3.1.msysgit.0があり、Linuxではgitバージョン1.7.5.4があります。

私は、この種の関連しているよう見えるSOの質問をたくさん見つけましたが、明確で関連性のある解決策はありませんでした。

更新:ファイルはリモートホスティングサービスでホストされているため、WindowsマシンとLinuxマシンの両方がリモートリポジトリからプルされます。

4

3 に答える 3

2

解決策の奇妙さのために私自身の質問に答えます。

最初のステップは、@ Don Branson、@ VonC、@robinstが提案したとおりです。cloneWindowsマシンの新しいフォルダをクリーンアップしました。
これは機能していないようで、gitはまったく同じエラーを返しました。

ただしgit status、同じ名前のフォルダが存在し、適切なファイルが含まれている場合でも、問題のあるフォルダは「削除済み」と表示されました。
次に、「削除された」フォルダーをステージングしてコミットし、リモートリポジトリにプッシュしました。元のリポジトリからコミットをプルしました。見よ、ブランチは適切に更新されました。

于 2012-10-25T13:48:59.560 に答える
1

name問題は、古いディレクトリNameが削除される前に、Gitが最初に(新しい名前で)新しいファイルを作成しようとすることである可能性があります。したがって、新しいディレクトリを作成しようとしても、大文字と小文字が区別されるため、すでに存在していることにname気づきません。Name

次のことを試すことができます(もちろん、クリーンな作業ディレクトリを使用して)。

  1. my/folder/Name(古い場所)を再帰的に削除します。
  2. (あなたgit reset --hard origin/branchnameが引っ張っている枝)をしてください。

または、新しいクローンを作成します。

于 2012-10-25T13:24:20.190 に答える
1

git pullgitを実行すると、コミットが順番に適用されます。したがって、ディレクトリは最終コミットによって統合されますが、HEADに到達するために適用されているコミットには含まれません。Windowsマシンで新しいgitクローンを試してみます。

于 2012-10-25T13:11:32.407 に答える