Udemy 4. 複数プロジェクトのGit管理 #01
2020年06月24日に更新

複数プロジェクトで行うGit管理の全体像を理解しよう(Gitサブモジュール解説)

この記事には

本チャプターで達成することと、それぞれのプロジェクトをGitでどう管理するかが書かれています。

このチャプターで達成すること

今回のチャプター「複数プロジェクトのGit管理」では、前チャプターで作成した各プロジェクトをGitHubで管理する設定を行います。

具体的には、

  • 「front」ディレクトリのサブモジュール化
  • GitHubへ新規アカウント作成
  • 秘密鍵と公開鍵を作成しSSH通信
  • GitHub上でリポジトリ・プロジェクトの作成

を行います。

最終的に全てのプロジェクトをGitHubにpushすることをゴールとします。

Git01

作業に入る前にGit管理の全体像を把握しておきましょう。

Gitリポジトリは3つ

リポジトリとは、プロジェクトファイル一式を保管する箱です。

今回はこの箱を3つ用意し、それぞれをGitHubにpushします。

  1. 「root」リポジトリ … 作業フォルダ直下のファイルを管理する。
  2. 「api」リポジトリ … Railsアプリを管理する。
  3. 「front」リポジトリ … Nuxt.jsアプリを管理する。

rootリポジトリが管理するもの

画像上では「myapp」となっていますが、これは全てのプロジェクトが入った作業ディレクトリです。

この「root」リポジトリは、主にdocker-compose.ymlなどの直下にあるファイルを管理します。


  • Railsが入った「api」リポジトリ
  • Nuxt.jsが入った「front」リポジトリ

上記2つはそれぞれ個々が管理し「root」リポジトリは、この2つのリポジトリをサブモジュールとして扱います。

サブモジュールとは何か?

別プロジェクトの編集履歴を現在のプロジェクトに紐付けするGit機能の一つです。

編集履歴とはGitで言うコミットのバージョンのことです。

「api」リポジトリを例に出すと、

  • rootリポジトリ … apiのコミットIDだけを管理する
  • apiリポジトリ … 1プロジェクトとして管理する

このようになり、2つのプロジェクトは完全に独立して管理します。

apiリポジトリが管理するもの

ここではRailsアプリ一式を管理します。

Gitにコミットする場合も「api」ディレクトリに移動してコミットを行います。

root $ cd api

# 移動してコミット
api  $ git add -A
api  $ git commit

「api」リポジトリがコミットされると、当然コミットIDも変化します。

その場合、「root」リポジトリもコミットする必要があります。

今後のコミット手順
  1. Railsアプリを編集した
  2. apiディレクトリに移動してコミットする
  3. rootディレクトリに戻る
  4. rootリポジトリもコミットする

この手順を踏むことで最新のコミットIDが「root」リポジトリ内で管理されます。

frontリポジトリで管理するもの

Nuxt.jsアプリを管理します。

コミット手順もapiリポジトリと同じです。

次回

次回から実際に作業に入りましょう。

現在の子ディレクトリをサブモジュール化する手順をご紹介します。

↓のリストへお進みください。

あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる...。そんな方に向けた単発・短期間メンターサービスを行っています。下のサービスへお進みください。
独学プログラマのサービス
次の記事はこちら
1. このカテゴリーの歩き方 #01
【お知らせ】UdemyでRails × Nuxt.jsの動画を公開することになりました
1. このカテゴリーの歩き方 #02
【随時更新】このカテゴリーで作るアプリケーションの仕様書
1. このカテゴリーの歩き方 #03
【随時更新】このカテゴリーの歩き方
1. このカテゴリーの歩き方 #04
(Docker+Rails6+Nuxt.js+PostgreSQL)=>Heroku 環境構築~デプロイまでの手順書
2. Docker入門 #01
Docker for Macをインストールする手順
2. Docker入門 #02
分かるDocker解説。仮想環境・コンテナ・Dockerイメージ・Dockerfileとは何か?
2. Docker入門 #03
分かるDocker解説。DockerComposeとは何か?
3. Dockerを使ったRails+Nuxt.js環境構築 #01
【Docker+Rails6+Nuxt.js】今回作成するアプリの開発環境の全体像を知ろう
3. Dockerを使ったRails+Nuxt.js環境構築 #02
【MacOS】Homebrew経由でGitをインストールする方法
3. Dockerを使ったRails+Nuxt.js環境構築 #03
Rails6を動かすAlpineベースのDockerfileを作成する(AlpineLinuxとは何か)
3. Dockerを使ったRails+Nuxt.js環境構築 #04
Nuxt.jsを動かすAlpineベースのDockerfileを作成する(C.UTF-8とは何か)
3. Dockerを使ったRails+Nuxt.js環境構築 #05
.envファイルを使ったdocker-compose.ymlの環境変数設計
3. Dockerを使ったRails+Nuxt.js環境構築 #06
Rails6・Nuxt.js・PostgreSQLを動かすdocker-compose.ymlファイルを作成する
3. Dockerを使ったRails+Nuxt.js環境構築 #07
docker-compose.ymlを使ってRails6を構築する(PostgreSQLパスワード変更方法)
3. Dockerを使ったRails+Nuxt.js環境構築 #08
docker-compose.ymlを使ってNuxt.jsを構築する
4. 複数プロジェクトのGit管理 #01
複数プロジェクトで行うGit管理の全体像を理解しよう(Gitサブモジュール解説)
4. 複数プロジェクトのGit管理 #02
【Git】既存の子ディレクトリをサブモジュール管理に変更する手順
4. 複数プロジェクトのGit管理 #03
【GitHub】秘密鍵の生成・公開鍵を追加・SSH接続するまでを画像で分かりやすく
4. 複数プロジェクトのGit管理 #04
【GitHub】リモートリポジトリの追加・サブモジュールのリンク設定を行う
5. RailsAPI×Nuxt.js初めてのAPI通信 #01
【Rails6】"Hello" jsonを返すコントローラを作成する
5. RailsAPI×Nuxt.js初めてのAPI通信 #02
【Nxut.js】axiosの初期設定を行う(baseURL・browserBaseURLを解説)
5. RailsAPI×Nuxt.js初めてのAPI通信 #03
【Rails6】Gem rack-corsを導入してCORS設定を行う(オリジン・CORSとは何か)
6. Heroku.ymlを使ったDockerデプロイ #01
最初の一歩。Herokuへ新規会員登録を行いHerokuCLIをインストールする
6. Heroku.ymlを使ったDockerデプロイ #02
heroku.yml解説編。Docker環境のRails6をHerokuにデプロイする(1/2)
6. Heroku.ymlを使ったDockerデプロイ #03
HerokuCLI-manifestのデプロイ解説編。Docker環境のRails6をHerokuにデプロイする(2/2)
6. Heroku.ymlを使ったDockerデプロイ #04
Dockerfile解説編。Docker環境のNuxt.jsをHerokuにデプロイする(1/2)
6. Heroku.ymlを使ったDockerデプロイ #05
デプロイ完結編。Docker環境のNuxt.jsをHerokuにデプロイする(2/2)
7. モデル開発事前準備 #01
【Rails6】application.rbの初期設定(タイムゾーン・I18n・Zeitwerk)
新着
SPA開発
ブログ構築
小ネタ集