Githubで管理されているレポジトリAにレポジトリBの中身をpushしたい

tech article

やりたいこと

現状レポジトリAが以下の状態だとします

.
└── repoA
    ├── repoA-1
    └── repoA-2

それを以下のような状態にしたいです。

.
└── repoA
    ├── repoA-1
    ├── repoA-2
    └── repoB
        ├── repoB-1
        ├── repoB-2
        └── repoB-3

そして、ただファイルを持ってくるだけではなく、今後修正したファイルはすべてrepoAにpushしたいです。

前提

今回ローカルはGitHub Codespacesを利用しています。

結論

  • まずレポジトリBをローカルにcloneする
  • レポジトリBの.gitファイルを削除する
  • レポジトリAにpushする

これでOKです

やること

これがしたい。

cloneしてpushするだけやんと思ってやってみました。

この状態のローカルのmainブランチに、レポジトリB(https://github.com/tiny-browserbook/exercise-rendering)をcloneします。

git clone https://github.com/tiny-browserbook/exercise-rendering

実際にcloneできました。
ただしソース管理のところで新規ファイルが増えた通知が出ていません。

ためしにテストファイルを作成したところ、こちらは正しく認識されています。

どういうことでしょうか。

結論から言うと、どうやらexercise-renderingディレクトリはレポジトリBで管理されており、GitHub CodespacesのリモートレポジトリはレポジトリAであるため、レポジトリAにpushすることができないみたいでした。

その証拠に、exercise-rendering配下には.gitファイルが存在しています。
なぜかGUI上では.gitファイルが存在していないため混乱してしまいましたが、コマンドで確認すると.gitファイルが存在することを確認できました。

.gitファイルを削除したら例のアイコンの通知の値が変わりました。
ただし削除から5分ほど待たないと反応しませんでした。(これはGitHub Codespacesのせい?ちょっとわからず)

あとはcommitしてpushすれば完了です

おまけ

今回は以下のサイトのハンズオンを実施している中で遭遇した悩みを記事にしました。(以下のサイトは躓きとは全く関係ないです。)

ちいさな Web ブラウザを作ってみよう
本オンラインブックはセキュリティ・キャンプ全国大会 2021 オンラインの講義「ちいさなWebブラウザを作ってみよう」の事前学習資料です。ちいさな Web ブラウザを作ることを通して現代の Web ブラウザの仕組みを学びましょう。

webページが生成される過程がずっとよくわからなかったのですが、自分で作ってみることで何となくわかった気がしました。
Rustを全く理解していない自分でも、GPTに聞きながらなんとか動くものは作れました。
おすすめです。

2024/12/14追記

.gitファイルがVSCode上のファイルとして表示されていなくて混乱した、と書いていました。

「.」で始まるファイルは隠しファイルという認識だったので、.gitignoreが見えている、つまり隠しファイルが表示されている設定なのだと考えていました。

隠しファイルも表示されるはずなのになぜ.gitは表示されないのだろう…

と思って混乱していたのですが、VSCodeの設定でfiles.excludeをチェックすると謎が解けました。

Ctrl + ,(Windows)または Cmd + ,(Mac)を押して設定画面を開きます。
そこでfiles.excludeと入力すると、非表示にするファイルを設定することができます。
.gitファイルを見つけられなかったのはデフォルトで.gitが非表示の設定になっていたからでした。

.gitの非表示設定を削除すると、.gitファイルも見えるようになりました。

また、UNIX系においては「.」で始まるファイルが隠しファイルという扱いになるのですが、Windowsにおいてはファイルに隠し属性というプロパティが付与されていると隠しファイル扱いになるらしいです。

世の中知らないことだらけですね。

タイトルとURLをコピーしました