Help us understand the problem. What is going on with this article?

Github上に同じ日本語名のディレクトリが2つ出来てしまった場合の対処法

More than 3 years have passed since last update.

課題

Githubで同名のファイルが2つある

日本語の名前を持つファイルをGithubにアップし、別々のマシンから編集してpushすると以下のような状態になってしまいました。

スクリーンショット 2018-01-15 17.36.50.png

(ちなみに内容は勉強会のメモ)

原因

Google先生に聞いてみたところ、同様のことを訴えていた方がいらっしゃいました。案の定、文字コードの問題のようです。

やっぱり Git 上で日本語ファイル名は使うべきじゃないという話 - WonderPlanet DEVELOPER BLOG

しかし、上記の事例とは異なり、ブラウザからのファイル削除で対応できませんでした。Githubではブラウザからディレクトリを削除する方法が提供されていないからです。

解決策

  • リモートをローカルに強制的に一致させる
    • Gitの管理対象ファイルをすべて削除する
    • ローカルのファイルを再度コミットしてpush

本来なら分裂したディレクトリだけを管理対象から消せば良いのですが、同様の分裂が別の箇所で起こっている可能性を考慮して全削除にしました。
「何も考えなくて良いからゴリ押し」というのは案外馬鹿にできないのです。

実行したコマンド

ローカルで以下を実行します。
カレントディレクトリはリポジトリ内の最上位のものとします。

$ git rm --cached -r . # ローカルにファイルを残したまま、gitの管理対象ファイルを全削除

$ git commit -m "remove all" # 一旦すべて削除した状態をコミット
$ git push -f # リモートもすべて削除された状態に

$ git add . # 再度ローカルの全ファイルを管理対象に追加
$ git commit -m "reset" # 全ファイルを管理対象にした状態をコミット
$ git push -f # プッシュしてリモートに再度ファイルを作成

注意

かなりの力技なので、複数人で管理しているリポジトリでは絶対に行わないようにしましょう。

expajp
マネジメントに関心のあるエンジニアです。仕事ではRails、趣味ではRubyの他にVueやGASも書いています。
http://expajp-tech.hatenablog.com/
mohikanz
エンジニアのための雑談コミュニティ
https://mohikanz.slack.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away