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

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

新規登録して質問してみよう
ただいま回答率
85.44%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

8534閲覧

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

yosse95ai

総合スコア39

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2020/04/19 17:00

編集2020/04/20 13:29

前提・実現したいこと

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

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

エラーメッセージ

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

console

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

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

console

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

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

console

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

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

console

1vagrant@ubuntu-bionic:~/workspace$ git rm assessment/ 2fatal: not a git repository (or any parent up to mount point /home/vagrant) 3Stopping 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することで、この問題の根本的な部分をいったん無視しようとします。

wsl

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

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

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

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

前提と試行錯誤

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

PCを再起動後に、GitHub上の該当するリポジトリを削除した後だとなぜか

rm -rコマンドでうまくいきました。 ←2020/04/20

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

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

ubuntu

1vagrant@ubuntu-bionic:~/workspace$ rm -r assessment/ 2rm: cannot remove 'assessment/.git/branches': Protocol error 3rm: cannot remove 'assessment/.git/hooks': Protocol error 4rm: cannot remove 'assessment/.git/info': Protocol error 5rm: cannot remove 'assessment/.git/refs/heads': Protocol error 6rm: cannot remove 'assessment/.git/refs/tags': Protocol error 7rm: 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を示します。

ubuntu

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

結論?

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

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

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

投稿2020/04/20 13:26

編集2020/04/20 13:28
yosse95ai

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問