2017-08-29 27 views
0

私は通常、macOSのプロジェクトにコミットしていますが、先行するスペースと後続のスペースがフォルダ名に誤って埋め込まれていることに気付かなかったのですが、最近はWindowsからのレポをクローンしようとしました。 このエラーが発生します:gitクローンは成功しましたが、チェックアウトに失敗しました。先頭または末尾に空白があるフォルダのため

fatal: cannot create directory at 'FolderName /SubFolderName' 
warning: Clone succeeded, but checkout failed. 

Macから変更することなく正常にチェックアウトする方法はありますか? Windowsでチェックアウトエラーの原因となる先頭と末尾のスペースを防ぐにはどうすればよいですか? FinderにmacOSの先頭または末尾のスペースをすべて強調表示させる方法がありますか、それとも良いですか?互換性のためにそれらを拒否しますか?

+2

は 'フォルダ名です'リポジトリdir、あなたはレポをチェックしましたか?将来的にOSX上でそのようなことを拒否するには、コミットの内容(またはディレクトリのみ)をスペースでチェックするプリコミットフックを書くだけです。 –

+0

@Jens、いいえ、リポジトリディレクトリではありませんが、実際には先行スペースまたは後続スペースまたはその両方を持つ複数の子ディレクトリです。あなたが示唆するように、pre-commitフックを書くことが最良の解決策になります。それは何かをします:https://stackoverflow.com/a/46035672/2008463 –

答えて

1

MacOSで最も簡単に名前を変更できます。しかし、あなたは低レベルのコマンドを使用して、同様のウィンドウでそれを修正することができます:

  • 使用sparse checkoutをチェックアウト
  • から壊れたパスをスキップするには、dirの木のハッシュを見つける:ディレクトリはトップレベルにある場合git ls-tree HEAD:<parent dir>またはgit ls-tree HEADgit rm -r --cached 'invalid_dir '
  • コム:git update-index --add --cacheinfo 040000,df2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078,valid_dir
  • は、古いディレクトリを削除します、それは新しい名前としてツリーを追加
  • 「invalid_dir04万ツリーdf2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078」のようなものを印刷します名前の変更をMITの:有効なディレクトリをチェックアウトするgit commit -m 'Rename invalid direct'
  • 更新worktree:git reset --hard:私はあなたがこのインスタンスではまだ行わすべての作業を持っていないと仮定し、そう何も失うものはありません)
+0

ありがとうございました。うわー、それは私が予想していた以上に複雑です。あなたは正しいです、ファイルを変更して、Macからのファイルの名前を変更するのがはるかに簡単です。 –

関連する問題