トップ回答者
Git submodule の取り込み方法

質問
-
お世話になっております。
Visual studio 2017 (15.6.5) を使用しています。Git を最近使いだし、社内に立てたGitサーバをリモートリポジトリとして、単一のソリューションにおいて、チームエクスプローラーから同期(プッシュ、クローン、プル)できています。
任意のソリューションに、別のリポジトリ?(ソリューション)をサブモジュール(共通コード)として取り込みたいのですが、どのように操作するか、どこのメニューを操作するか、ご存知の方がいらっしゃいましたらご教示いただけますと助かります。サブモジュール側は、VisualStudioの「共有プロジェクト」で作成ものを、同じGitサーバへプッシュしたものになります。
こちらに
https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/13316574-commit-changes-to-a-submodule-using-vs
"You can open a submodule, make changes, and commit."とあるので、Visual Studio 2017 Update 5で、submoduleを取り扱えるようですが...簡単なことなのかもしれませんが、IDEの操作でもネット上でも、その方法をなかなか自力で見つけられず、おそれいります。
- 編集済み Always fresh 2018年4月11日 1:40
回答
-
こんばんは、
Visual Studio では私も初めて使用しますが、サブモジュールとして追加する、という操作(git submodule add <repo> にあたる操作)は、私も見つけることができませんでした。
もしかして、と思ったのですが、ご質問文中の外部リンクの原文では...
> Visual Studio now treats Git submodules like normal repos. Just add them to your list of Local Repositories and get coding! You can open a submodule, make changes, and commit.
とあります。確かに Team Explorer からローカルリポジトリのリストに既存のサブモジュール(CUI からコマンドで追加したもの)を追加することは可能でした。また、サブモジュールを含むクローンも可能です。しかし、どうやら作業中のリポジトリに既存のリポジトリをサブモジュールとして追加する、という操作は GUI からはまだ行えないように見受けられます。
この操作を行うためには、Visual Studio ではなく Cmd.exe 等からコマンドを使用して行う他ない、と思われるのですがいかがでしょうか。Visual Studio Team Services のリファレンスも目を通しましたが、それらしい説明を見つけることができませんでした。
[1] 7.11 Git のさまざまなツール - サブモジュール | git-scm.com
https://git-scm.com/book/ja/v2/Git-のさまざまなツール-サブモジュール[2] Get Started with Git and VSTS | docs.microsoft.com
https://docs.microsoft.com/en-us/vsts/git/gitquickstart?view=vsts&tabs=visual-studio回答としては不十分であるかもしれませんが、私も気になったため回答いたしました。内容に不明点があればお知らせください。
-- Momoto, Seiji
- 回答としてマーク Always fresh 2018年4月12日 6:16
すべての返信
-
こんばんは、
Visual Studio では私も初めて使用しますが、サブモジュールとして追加する、という操作(git submodule add <repo> にあたる操作)は、私も見つけることができませんでした。
もしかして、と思ったのですが、ご質問文中の外部リンクの原文では...
> Visual Studio now treats Git submodules like normal repos. Just add them to your list of Local Repositories and get coding! You can open a submodule, make changes, and commit.
とあります。確かに Team Explorer からローカルリポジトリのリストに既存のサブモジュール(CUI からコマンドで追加したもの)を追加することは可能でした。また、サブモジュールを含むクローンも可能です。しかし、どうやら作業中のリポジトリに既存のリポジトリをサブモジュールとして追加する、という操作は GUI からはまだ行えないように見受けられます。
この操作を行うためには、Visual Studio ではなく Cmd.exe 等からコマンドを使用して行う他ない、と思われるのですがいかがでしょうか。Visual Studio Team Services のリファレンスも目を通しましたが、それらしい説明を見つけることができませんでした。
[1] 7.11 Git のさまざまなツール - サブモジュール | git-scm.com
https://git-scm.com/book/ja/v2/Git-のさまざまなツール-サブモジュール[2] Get Started with Git and VSTS | docs.microsoft.com
https://docs.microsoft.com/en-us/vsts/git/gitquickstart?view=vsts&tabs=visual-studio回答としては不十分であるかもしれませんが、私も気になったため回答いたしました。内容に不明点があればお知らせください。
-- Momoto, Seiji
- 回答としてマーク Always fresh 2018年4月12日 6:16
-
Momoto様
ご教示いただき有難う御座います。お陰様で課題を満たすことが出来そうです。
Visual Studio を終了させ、Git BASH から "git submodule add <repo>" を発行し、ふたたび Visual Studio で該当するソリューションを開いてチームエクスプローラーの変更(コミット)画面を表示させたところ、ステージング済みとして「サブモジュール」がしっかりと認識されていました。
変更(コミット)後リモートリポジトリにもこれらを同期(プッシュ)させ、別途 Visual Studio を開いてこれを複製(クローン)したところ、サブモジュールまで再帰的に、ファイルがローカルリポジトリへ読み込まれました。
最近 Git を使いはじめだした私ですが、コードを編集してプッシュが正常に完了すると気持ち良いですね!あと少し、Visual Studio に進化していただいて、IDE から Git をいろいろ操作できるようになってほしいです。
今後とも、よろしくお願いいたします。
- 編集済み Always fresh 2018年4月12日 6:29