🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Git

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

samba

Samba(サンバ)とは、UNIX系OSにおいてSMBを用いたサービスを提供するためのソフトウェアです。ネットワークを通じて、ファイル共有及びプリンタ共有などのサービスをWindowsマシンへと提供します。ライセンス体系GPLに基づきフリーソフトウェアとして公開されています。

Q&A

解決済

3回答

1590閲覧

vscode+gitでネットワークのディレクトリを管理するには?

SakuTaka

総合スコア12

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Git

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

samba

Samba(サンバ)とは、UNIX系OSにおいてSMBを用いたサービスを提供するためのソフトウェアです。ネットワークを通じて、ファイル共有及びプリンタ共有などのサービスをWindowsマシンへと提供します。ライセンス体系GPLに基づきフリーソフトウェアとして公開されています。

0グッド

0クリップ

投稿2019/10/15 00:48

編集2019/10/18 08:58

前提・実現したいこと

windows10のvscodeでgitを使っています。
ソースはlinuxのサーバにありwindows10からsambaで接続しています。
linux側では問題なくgit管理できていますが
windows10側ではgit bashで操作してもgit情報が正しく反映されていません。
vscodeでは大量(おそらくすべて)のファイルが「変更」になっています。
windows10、最終的にはvscodeでlinuxサーバ上のソース管理を行うにはどうすればよいのでしょうか。

発生している問題・エラーメッセージ

例)
git status -s
の結果
linux・・・何も表示されない
windows10・・・大量(おそらくすべて)のファイルがリストされる

git log -p --name-only
の結果は同じ

git config core.filemode false
を行った後

git status
の結果は(微妙に異なるがおおむね)同じ

git pull
を行うと
linuxは

Already up to date.

windowsはエラー

CreateProcessW failed error:193 ssh_askpass: posix_spawn: Unknown error Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

この段階で
vscodeでは変更追加したファイルは、いい具合に差分が表示できています。
ただ”ある特定のディレクトリ”がローカルに存在しないことになってしまっています。

補足情報(FW/ツールのバージョンなど)

windows10でディレクトリ.gitはRWでアクセスできます。

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

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

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

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

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

guest

回答3

0

ベストアンサー

git diffをすると、どうなっていますか?

憶測になりますが、linuxとsamba経由でのwindowsとだと、まず考えられるのはファイルパーミッションの違いです。
もしそれが原因で変更と判断されているのであれば、git diffした場合、以下のように出力されるはずです。

diff --git a/aaa b/aaa old mode 100644 new mode 100755

とりあえず、

辺りを検討されてはいかがでしょうか。

投稿2019/10/15 11:18

katsuko

総合スコア3538

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

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

SakuTaka

2019/10/16 00:19

ありがとうございます。 git diffは linuxの方は変更したファイルだけですが windowsの方はいろいろと大量に出力されます。 ファイル指定では 変更したファイルは出力は同じ。 変更していないファイルは linuxは何も出力されませんが windowsは以下です。 ``` warning: LF will be replaced by CRLF in XXXX. The file will have its original line endings in your working directory diff --git a/XXXX b/XXXX old mode 100755 new mode 100644 ``` git操作は現在(仕方なく)linuxの方でやっていますが、windowsだけで行うことは問題ないのでそうしたいのですが windowsの方に切り替えるには、pullをすれば良いのでしょうか。(すみません。ほぼ初心者です)
katsuko

2019/10/16 00:50

私の回答にある「ファイルパーミッションの変更を無視する設定」をすればいいと思います。
SakuTaka

2019/10/18 02:58

ありがとうございます。 たしか「ファイルパーミッションの変更を無視する設定」はやったように記憶していますが もしかしたら正しくできてないのかもしれませんので再確認してみる必要はあります。 とりあえず別件で手を付けられないので後日とさせていただきます。 ありがとうございました。
SakuTaka

2019/10/18 08:37

お世話になっています。 質問を更新しましたが 少し進展したようですが、エラーになります。 これはgitではなくOpenSSHのエラーなのでしょうか。 調べています。
katsuko

2019/10/18 12:08

sshを起動して、エラーを起こしているようです。 vscodeは使っていないのでこの辺りの設定はわかりかねますが、できるのであればまずはsshでログインできるかどうか試してみるのも手です。
SakuTaka

2019/10/24 05:00

エラーはキーをうまく作れてなかったようです。ちょっと”?”がありますが、いい感じにできるようになりました。 ありがとうございました。 m(_ _)m
guest

0

ネットワーク上の共有ディレクトリをGitで管理しようとしてるようですが、Gitはそういう用途ではつかえません。
Gitで管理したいなら、共有ディレクトリではなく、双方、それぞれの作業ディレクトリを作ってそこで管理するようにしましょう

投稿2019/10/15 00:58

y_waiwai

総合スコア88038

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

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

SakuTaka

2019/10/15 01:00

ありがとうございます。なるほど。そうなんですか。
y_waiwai

2019/10/15 01:06

WindowsとLinuxではファイルの時間管理に違いがあるため、Linux上のファイルをWindows側で見ると、ファイルの更新判定が正常に行われません
SakuTaka

2019/10/15 05:51

ありがとうございます。なるほど。ファイルのタイムスタンプの問題ですか。ファイルを中身を変えずに保存して(編集日時を更新して)もgitでは変更されたと認識されないので、あくまで内容の差異でタイムスタンプは見ていないのかと思っていました。
guest

0

こんにちは。

リモートサーバにあるリポジトリを直接共有しないようにします。windows と linux 間で同一のディレクトリを扱うのは無理です。
一般的には、linux サーバ上に新しく一つのリモートリポジトリを作り、それを linux の実リポジトリと windows のローカル環境からアクセス可能なリモートとして利用する方法があります。
windows からはあくまでローカルのリポジトリを操作し、リモートを更新することで同期するようにして下さい。
GitHub 等のリモートリポジトリの代わりに linux サーバ上の一ディレクトリを使うようにするだけです。

投稿2019/10/15 01:05

tamoto

総合スコア4239

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

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

SakuTaka

2019/10/15 05:35

ありがとうございます。なるほど。「別なリモートリポジトリ」を作ってlinuxとwindows両方から同期するということでしょうか。ということは手順としては、「1.vscodeで編集→2.vscodeのソースコントロールでリモートにプッシュ→3.linuxでpull」となりますか?さらに「本来のリモートリポジトリ」にコミットするにはどこからどうすればよいのでしょうか。「本来のリモートリポジトリ」に作業用のブランチを作ってそこを同期するというのでできるのでしょうか。
tamoto

2019/10/15 05:44

「本来のリモートリポジトリ」があるんですか?だったら単純にそれを windows からクローンして使うでいい気がしますが。 回答の提案はその理解であってます。linux のリポジトリが「本来のリモート」を持つなら、「本来のリモート」と「別のリモート」の2つを持たせて、共有したいものを共有したい方に置けば良いです。例えば「別のリモート」から同期して持ってきたコミット列を「本来のリモート」に push できます。
SakuTaka

2019/10/15 05:56

「本来のリモートリポジトリ」はあまり汚染したくなかったもので。後段の部分の理解が及ばないのですが、同じローカルディレクトリを複数のリモートに同期することができるのでしょうか。
tamoto

2019/10/15 06:01

はい、そうです。Git は「最初のリモートリポジトリ」に慣習として origin という名前を付けるので、別名でいくらでもリモートを追加して同期できます。 例えば、GitHub に public なリポジトリと private なリポジトリの2つを作り、public 側にはキレイなブランチだけを push し、private 側にはダーティなコミットを投げるなんていうことも可能です。
SakuTaka

2019/10/15 06:12

ありがとうございます。なるほど。手順が増えますがその線でいくしかないのでしょうか。 そもそもの目的についてですが、本件のlinuxというのはローカルのテスト用で、そこのソースをvscodeで編集確認してリモートにコミットするという手順です。 よくあるパターンだと思いますが、そういった場合はどのように構成するのが最も効率的なのでしょうか。
tamoto

2019/10/15 06:21

「windows で編集、linux に適用して確認」という状況なら、これはちょっとしたハックですが、windows のリポジトリを正としておいて、linux の Git リポジトリを「ワーキングディレクトリ付きリモート」として扱い、windows 側から linux に push することでソースの変更を反映する、というやり方が考えられます。 ここに回答した手順でそのようなことができます。-> https://teratail.com/questions/156203#reply-234505
SakuTaka

2019/10/15 06:39

試してみたいと思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問