2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Icon\r のせいでWindows側からpullできない

Last updated at Posted at 2019-11-18

WindowsとMacの両方で共同開発

MacとWindowsで共同開発をすることはあまりないかもしれませんが、同プロジェクトのコードを一つのリポジトリで管理しておきたいということはあるかもしれません。そんなときにはまった落とし穴について備忘録的に書いておきます。

エラー内容

Mac側からリモートリポジトリにpushした結果をWindows側でpullしようとすると、以下のようにエラーを吐かれました。

error: unable to create file Icon?: Invalid argument
error: unable to create file arduino/Icon?: Invalid argument
error: unable to create file arduino/LED_test/Icon?: Invalid argument
error: unable to create file visualization/Icon?: Invalid argument

このエラーは全て"Icon?"というファイルに引っかかっているようですが、このサイトの回答にあるように、""のような文字を持つファイルがWindowsではサポートされていないかららしいです。
ちなみにこの "Icon$\r" というファイルは、Macでgitを使ったときに勝手にローカルリポジトリに作られてしまうファイルなのですが、MacOSの制御用のファイルのようなので、バージョン管理をする必要はありません。

解決策

というわけで、一旦あらゆるディレクトリから以下のようにこのファイルを消して(ちゃんと、"git rm"で消す)

$ git rm Icon$'\r'

その結果をpushしたあと、再びWindows側からpullし直すと、

remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 4 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
~(略)~
Merge made by the 'recursive' strategy.

というようにpullすることができました。

今後のために

また、今後もこうなるのは面倒なので、このサイトにあるように、".gitignore"ファイルにこのファイル名を記載してしまいましょう。

.gitignore
Icon*

特に"Icon~"という名前のファイルを作る必要が無いのなら、この方法で除くのが一番簡単でしょう。
この一行を.gitignoreに含めて新たにテストしてみた結果、ちゃんと管理対象外になっていることが分かります。
スクリーンショット 2019-10-31 20.32.49.png
ちなみに、"test"というフォルダの差分が取られていないのは、このサイトにあるように空のフォルダは登録されないからです。

補足

途中で削除した "Icon$\r" は、そのまま削除したままにしておいても特に問題はなさそうです。MacOSの制御用ファイルらしいので何かとヤバそうな匂いがしますが、git管理で初めて現れるものなので作りたいプログラム自体に影響はないはずですし、今のところはgitコマンドにも影響していないので、とりあえずは大丈夫そう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?