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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Windows 10

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

GitHub Pages

GitHub Pagesは、GitHubが提供するホスティングサービス。ブログやプロジェクトのWebページをGit/GitHubのリポジトリを用いて簡単に公開できます。静的Webページのためのホスティングサービスで、GitHubのアカウントがあれば無料での利用が可能です。

GitHub

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

Q&A

解決済

1回答

1414閲覧

GitHubにサブモジュールを追加したい

yukimeat1999

総合スコア20

Windows 10

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

GitHub Pages

GitHub Pagesは、GitHubが提供するホスティングサービス。ブログやプロジェクトのWebページをGit/GitHubのリポジトリを用いて簡単に公開できます。静的Webページのためのホスティングサービスで、GitHubのアカウントがあれば無料での利用が可能です。

GitHub

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

0グッド

0クリップ

投稿2022/12/02 03:31

編集2022/12/03 04:06

前提

GitHubに新規リポジトリを作成して,そこへOpenRTMの各プロジェクトファイルをアップロードしました.

Edge上に表示させたGitHubのWebページにアップロードしました.
作成したリポジトリのページから
Add file > Upload files
をクリックし,Drag files here to add them to your repositoryと表視された枠内にパソコンからドラッグアンドドロップしてプロジェクトファイルを追加しました.

※ UrgRTC-masterは別の方が作成したプロジェクトファイル(リポジトリ)です.

その後,UrgRTC-masterはGitHubのリポジトリがあるので,そのままソースコードをアップロードせずに,サブモジュールとして追加した方がいいのではないかというissueをもらいました.

そのため,サブモジュールとして追加しようと思いいろいろ調べたのですが,GUIでサブモジュールを追加する方法について説明しているサイトは見つけられませんでした.

サブモジュール追加については,ターミナルでコマンドラインを使って操作して,作ったリポジトリと関連づいてるディレクトリにサブモジュールを作ってプッシュするといった内容が書いてありました.

そこで,すでにGUIでアップロードされたリポジトリに,PCのディレクトリにあるフォルダーを関連付けて,ここでサブモジュールを追加する操作をコマンドラインで行えばサブモジュール追加ができるのではないかと考えました.

自宅の自分のPCにGitHubの環境構築をしています.(使ったことはないですが)

実現したいこと

1.GUIで作成したリポジトリと自宅PCのディレクトリを関連付ける.
2.サブモジュールを追加する.

該当のGitHubページ

私が作成したリポジトリ

追加したいサブモジュールのリポジトリ

試したこと

このサイトを参考にまず,既に作成済みのリポジトリと関連付けを行った.

この時,

GitHub

1git add .

と入力すると,

GitHub

1warning: in the working copy of 'Destination_gen/RTC.xml', LF will be replaced by CRLF the next time Git touches it 2warning: in the working copy of 'FuzzyControl/RTC.xml', LF will be replaced by CRLF the next time Git touches it 3warning: in the working copy of 'FuzzyControl/src/controller.cpp', LF will be replaced by CRLF the next time Git touches it 4warning: in the working copy of 'GNG_component/RTC.xml', LF will be replaced by CRLF the next time Git touches it 5. 6. 7.

こんな感じのエラーが大量にでた.

分からなかったので,ほかの操作を続け,

GitHub

1git push origin master

GitHub

1error: src refspec master does not match any 2error: failed to push some refs to 'https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC.git'

このサイトによると,今はmasterではなくmainとなってるらしいので,mainで実行すると,

GitHub

1info: please complete authentication in your browser... 2To https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC.git 3 ! [rejected] main -> main (fetch first) 4error: failed to push some refs to 'https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC.git' 5hint: Updates were rejected because the remote contains work that you do 6hint: not have locally. This is usually caused by another repository pushing 7hint: to the same ref. You may want to first integrate the remote changes 8hint: (e.g., 'git pull ...') before pushing again. 9hint: See the 'Note about fast-forwards' in 'git push --help' for details.

と表示された.

つぎにこのサイトを参考に,サブモジュール追加を試した.

しかし,

GitHub

1git push origin main

と入力すると,

GitHub

1error: failed to push some refs to 'https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC.git' 2hint: Updates were rejected because the tip of your current branch is behind 3hint: its remote counterpart. Integrate the remote changes (e.g. 4hint: 'git pull ...') before pushing again. 5hint: See the 'Note about fast-forwards' in 'git push --help' for details.

このようなエラーがでたため,このサイトを参考に

GitHub

1git fetch

と入力すると,

GitHub

1remote: Enumerating objects: 414, done. 2remote: Counting objects: 100% (167/167), done. 3remote: Compressing objects: 100% (130/130), done. 4remote: Total 414 (delta 45), reused 142 (delta 33), pack-reused 247 5Receiving objects: 100% (414/414), 2.27 MiB | 3.13 MiB/s, done. 6Resolving deltas: 100% (154/154), done. 7From https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC 8 * [new branch] main -> origin/main

となり,正常にできてそうなので,

GitHub

1git merge

と入力すると,

GitHub

1fatal: No remote for the current branch.

と表示され,pushもうまくいかなかった.

GitHub

1git push -u origin main

と試しに入れてもうまくいかなかった.

要約すると,git add .git merge git push origin mainで躓いてます.

最初,Windowsのコマンドプロントでやってましたが,Git CMDでもう一度試しましたが,同じようなエラーが出ました,そこでGit Bashでやりました.

すると,

GitHub

1git add .

すると,

GitHub

1fatal: detected dubious ownership in repository at 'H:/program/009_OpenRTM/GNG-Unk-Env-Navi_RTC-main' 2'H:/program/009_OpenRTM/GNG-Unk-Env-Navi_RTC-main/.git' is owned by: 3 'S-数字7個' 4but the current user is: 5 'S-すごく長い数字の列' 6To add an exception for this directory, call: 7 8 git config --global --add safe.directory 'H:/program/009_OpenRTM/GNG-Unk-Env-Navi_RTC-main'

ユーザーの番号っぽいとこは消してます.

こんな感じのエラーがでました.

GitHub

1git config --global --add safe.directory 'H:/program/009_OpenRTM/GNG-Unk-Env-Navi_RTC-main'

と入力すると通ったので,

また,git add .から同じようにしました.
しかし,pushのところで,同じようにエラーがでました.

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

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

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

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

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

guest

回答1

0

自己解決

別のPCからGitHubにGUIで登録しており,自身のPCにあるワークスペースは,GitHubからZIPファイルとしてダウンロードし,今回の作業を行っていた.
このため一度ワークスペースを削除し,GNG-Unk-Env-Navi_RTCディレクトリを作成し,これをワークスペースとして,Sourcetreeというソフトを用いて,ワークスペースを登録し,このファイルにGitHubからプルし,データを保存.

このサイトを参考に,Git Bash上でcdでワークスペースまでファイル移動.

git initはせずに,このサイトを参考に,

GitHub

1$ git submodule add https://github.com/sugarsweetrobotics/UrgRTC.git 2$ git commit -m "git add UrgRTC" 3 4$ git remote add origin https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC.git 5$ git push origin main

とすることで,サブモジュールを追加することができました.

ただし,自身のPC内のワークスペースを見てみると,サブモジュールの中のサブモジュールはダウンロードされていませんでした.

そこで,サブモジュールを追加すると生成されるワークスペース直下の.gitmodulesを見てみました.
ここでは,サブモジュール(UrgRTC)の中のサブモジュール(urglib)がダウンロードされていないため,サブモジュール(UrgRTC)直下の.gitmodulesを見てみると,サブモジュール(urglib)が追加された状態(サブモジュール名,パス,リンクが記載された状態)であることがわかりました.
おそらくこのファイルがあることで,サブモジュール(UrgRTC)の中のサブモジュール(urglib)をダウンロードすることができなかったのだろうと考えました.
しかし,そう単純化わからないので調べてみると,いいサイトがあったので,このサイトを参考にすることとしました.

まず,cdでサブモジュール(UrgRTC)の中までファイル移動.

GitHub

1$ cd UrgRTC

そこから,サイトの通り一度サブモジュール(urglib)を削除.

GitHub

1$ git submodule deinit -f urglib 2$ git rm -f urglib 3$ rm -rf .git/modules/urglib

このあと,改めてサブモジュール(urglib)を追加.

GitHub

1$ git submodule add https://github.com/sugarsweetrobotics/urglib.git 2$ git commit -m "git add urglib" 3 4$ git remote add origin https://github.com/yukimeat1999/GNG-Unk-Env-Navi_RTC.git 5$ git push origin main

とすることで,自身のPC内のワークスペースだけでなく,リモートリポジトリ上にも正常にサブモジュールを追加することができました.

この時,他人のサブモジュール(UrgRTC)の中に,他人のサブモジュール(urglib)をついkあしたわけだが,他人のサブモジュール(UrgRTC)に別のブランチが作られることはなく,もともとの他人のサブモジュール(UrgRTC)内に同じように他人のサブモジュール(urglib)が表示されていた.

投稿2022/12/06 17:06

yukimeat1999

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問