質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

ubuntuにおいてgithubからのcloneでfatal: could not set 'core.filemode' to 'false'となる

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 694

yosse95ai

score 7

前提・実現したいこと

私は今N予備校のWebプログラミングを勉強しているのですが、
教材の通りにやっていたらうまくいかないところが出ました。
Virtual Box上にUbuntuをインストールして作業しています。

githubからカレントディレクトリにフォルダをgit cloneしようとすると
fatal: could not set 'core.filemode' to 'false'となるため
うまくgit cloneができません。

エラーメッセージ

以下にうまくいかなかった状態を示します。
現在のカレントディレクトリの内容です

vagrant@ubuntu-bionic:~/workspace$ ls
bot    itunes-topsong-rss  niconico-ranking-rss  tmp
httpd  my-first-shell      rsa.txt

ここにcloneしようとします。

vagrant@ubuntu-bionic:~/workspace$ git clone git@github.com:yosse95ai/assessment.git
Cloning into 'assessment'...
error: could not write config file /home/vagrant/workspace/assessment/.git/config: Operation not permitted
fatal: could not set 'core.filemode' to 'false'
vagrant@ubuntu-bionic:~/workspace$ ls
assessment  httpd               my-first-shell        rsa.txt
bot         itunes-topsong-rss  niconico-ranking-rss  tmp
vagrant@ubuntu-bionic:~/workspace$ ls assessment/ -a
.  ..  .git


実際はassessmentディレクトリ内に
assessment.html,assessment.css,assessment.jsというファイルが存在していますが、
うまくいっていないみたいなので、削除しようとしました。

vagrant@ubuntu-bionic:~/workspace$ rm -r assessment/
rm: cannot remove 'assessment/.git/branches': Protocol error
rm: cannot remove 'assessment/.git/hooks': Protocol error
rm: cannot remove 'assessment/.git/info': Protocol error
rm: cannot remove 'assessment/.git/refs/heads': Protocol error
rm: cannot remove 'assessment/.git/refs/tags': Protocol error
rm: cannot remove 'assessment/.git/refs': Directory not empty


うまくいかなかったのでgit rmコマンドを使おうとしてみました。

vagrant@ubuntu-bionic:~/workspace$ git rm assessment/
fatal: not a git repository (or any parent up to mount point /home/vagrant)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).


なお、この削除の問題に関しては、GitHub上の該当するリポジトリを削除した後だと rm -rコマンドでうまくいきました。   ←2020/04/19

再び同じ状況になったのですが、今度はリポジトリを削除した後でもディレクトリの削除ができませんでした。。。  ←2020/04/19

PCを再起動後に、GitHub上の該当するリポジトリを削除した後だとなぜか
rm -rコマンドでうまくいきました。 ←2020/04/20

補足

教材とは関係なく個人的にVSCodewslを使っています。
そちらの方ではすべてうまくいきました。
また、公開鍵などの設定に関しましては、教材の通りですし、
ubuntu,wslともに同じ方法で設定したはずです。

初めてのこのサイトでの質問ですので拙いところがあると思いますが、
どうかご回答よろしくお願いします。


もし根本的な解決の方法が分かった方がいましたらコメントお願いします。

解決からの逃げ道...

根本的な解決ではないのですが、
Virtual Box側のディレクトリとWindows側のフォルダを共有できるようにしているため
WindowsからUbuntuのディレクトリをいじれます。
それを利用してgit cloneのできるwsl側からUbuntuの該当ディレクトリ内に
cloneすることで、この問題の根本的な部分をいったん無視しようとします。

/vagrant/ubntu64_18/workspace$ git clone git@github.com:yosse95ai/assessment.git
Cloning into 'assessment'...
Warning: Permanently added the RSA host key for IP address '13.114.40.48' to the list of known hosts.remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 8
Receiving objects: 100% (9/9), 4.13 KiB | 705.00 KiB/s, done.

/vagrant/ubntu64_18/workspace$ ls assessment/
LICENSE  README.md  assessment.css  assessment.html  assessment.js


ひとまずはこれで作業を進めていこうと思います。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

+1

自力解決しました<(_ _)>

根本的な解決っぽいものを見つけたので書いておきます。

いつか誰かの助けになればと思います。

前提と試行錯誤

私は、作業時ubuntuを起動後にwslで共有設定しているフォルダを開いていました。

PCを再起動後に、GitHub上の該当するリポジトリを削除した後だとなぜか
rm -rコマンドでうまくいきました。 ←2020/04/20

としていますが、この時点ではまだwslで共有フォルダを開いていない状態でした。

その後、wslで共有フォルダを開き、ubuntu上で同じ操作をすると、

vagrant@ubuntu-bionic:~/workspace$ rm -r assessment/
rm: cannot remove 'assessment/.git/branches': Protocol error
rm: cannot remove 'assessment/.git/hooks': Protocol error
rm: cannot remove 'assessment/.git/info': Protocol error
rm: cannot remove 'assessment/.git/refs/heads': Protocol error
rm: cannot remove 'assessment/.git/refs/tags': Protocol error
rm: cannot remove 'assessment/.git/refs': Directory not empty


となってしまいました。

また、wslで該当のフォルダを開いていないときgit cloneなどの操作はうまくいきました。

結果からわかること

おそらくなのですが、
Virtual Boxのubuntu → VSCodeのwslという順にコンソールを開いた場合、
そのフォルダ(ディレクトリ)におけるgitの権限的ななにかが、
wsl(後に開いたほう)に移るのだと思います。

再起動後に、rm -rできていたのはwslで該当フォルダを開いていなかったと予測できます。

実際、wslで該当の共有フォルダを開いていないとき、gitに関するすべての命令を
ubuntuで実行できました。

一例として、git cloneを示します。

$ git clone git@github.com:yosse95ai/intro-curriculum-3001.git
Cloning into 'intro-curriculum-3001'...
Enter passphrase for key '/home/vagrant/.ssh/id_rsa': 
remote: Enumerating objects: 23, done.
remote: Total 23 (delta 0), reused 0 (delta 0), pack-reused 23
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (6/6), done.

結論?

同端末上において、別々のgitアカウント同一フォルダ(ディレクトリ)を開くべきではない。

もし、同じような問題に当たった方の助けになればと思います。

ただこの問題が本当にこの限りで発生するのかという検証はしてませんので、
その点はご了承願いたいです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る