9
3

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.

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

Posted at

課題

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

注意

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

9
3
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
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?