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

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

More than 1 year has 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 # プッシュしてリモートに再度ファイルを作成

注意

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

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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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