👋

Git:ネットワーク接続なしで運用できる疑似リモートリポジトリ環境の作成

に公開

はじめに

セキュリティ環境が高い職場だと、ツールの導入なども難しいです。 一方で開発する身としては、バージョン管理ツールなどがある方が開発やコードレビューができるため導入したいです。職場での承認を貰うのに時間がかかる職場にいる方は今回のGitを用いて疑似的リモート環境を作る方法を選択肢の1つに入れてみてください。
※GitbucketやGitlabが簡単に導入可能なら、本記事は読まなくていいと思います。

今回作成する環境

今回作成する環境は以下になります。
project_allをGit管理します。開発メンバーはdevelopフォルダ配下にフォルダ作成をします。その後、git cloneしてローカル環境で作業をします。
筆者の環境はWindows11, git versionは2.38.1です。

root/
  |--project_all/
  |     |--project01
  |     |--project02
  |
  |-- develop(チーム開発するメンバーの開発用フォルダ)
  |     |--user01
  |     |--user02
  |
  |--remote/
  |     |--(gitのremote場所)
  • 作成手順
    1. 事前準備(root, proejet_all, develop, remoteフォルダの作成)
    2. 疑似リモートリポジトリの作成
    3. project_allフォルダ内のgit初期化
    4. developフォルダに各ユーザー毎にローカルリポジトリを作成

1.事前準備(root, proejet_all, develop, remoteフォルダの作成)

以下環境を作成してください。
※project_allフォルダにはGitで管理したいprojectフォルダがある前提で進めます。もし適当にフォルダを作って試したい場合は、project_allと各projectフォルダ内にREADME.mdファイルでも置いてください。

root/
  |--project_all/
  |     |--project01
  |     |--project02
  |
  |-- develop(チーム開発するメンバーの開発用フォルダ)
  |     
  |--remote/

2.疑似リモートリポジトリの作成

疑似リモートリポジトリの作成を実施します。remoteフォルダ内にproject_all.gitフォルダができれば完了です。
コマンドプロンプトで以下コマンドを実施してください。

cd root/remote
git init --bare project_all.git  # 疑似リモートリポジトリの作成

3.project_allフォルダ内のgit初期化

前回の作業で疑似リモートリポジトリが作成されています。現在のproject_allのデータをpushしましょう。
コマンドプロンプトで以下コマンドを実施してください。

cd root/project_all
git init  # ローカルリポジトリの作成
git remote add origin ../../remote/project_all.git
git add .
git commit -m "Initial commit"
git push origin master  # 人によって初期ブランチがmainとなっています。その場合はgit push origin mainを使用して下さい。

4.各ユーザー毎にローカルリポジトリを作成

developフォルダにユーザーフォルダを作ってください。筆者はuser01というフォルダを以下構成で作成しました。

root/
  |--project_all/
  |     |--project01
  |     |--project02
  |
  |-- develop(チーム開発するメンバーの開発用フォルダ)
  |     |--user01
  |     
  |--remote/

コマンドプロンプトで以下処理を実行します。

cd root/develop/user01
git clone ../../remote/project_all.git

以上となります。

batファイルの作成

上記の1~4は小人数運用なら良いと思いますが、大人数になると動作を間違える可能性があります。
なので各ユーザー毎にローカルリポジトリを作成するところは、batファイルを作成した方が良いと思います。
以下を参考にしてください。

各ユーザー毎にローカルリポジトリを作成するbat

@echo off
chcp 65001 > nul
REM 実行場所: root/remote/
REM ユーザー作業環境を develop/{username} に作成し、cloneしてGitユーザー設定を行う

set /p USERNAME=ユーザー名を入力してください(例: user1): 
set USER_DIR=../develop/%USERNAME%

REM フォルダ作成
if not exist %USER_DIR% (
    mkdir %USER_DIR%
    echo ユーザーフォルダ:%USER_DIR%を作成しました。
) else (
    echo ユーザーフォルダ:%USER_DIR%は既に存在します。
)

REM クローン
cd %USER_DIR%
git clone ../../remote/project_all.git
cd project_all

REM Gitユーザー設定
set /p GIT_NAME=Gitユーザー名を入力してください(例: Taro Yamada): 
set /p GIT_EMAIL=Gitメールアドレスを入力してください(例: taro@example.com): 

git config --global user.name %GIT_NAME%
git config --global user.email %GIT_EMAIL%

echo Gitユーザー設定を完了しました。
echo ユーザー名: %GIT_NAME%
echo メールアドレス: %GIT_EMAIL%

pause

注意点

今回疑似リモートリポジトリの作成をしています。
その為、プルリクエスト機能がありません。安易にpushをするとmainブランチを壊す可能性があります。
上記を使用する場合は、きちんとブランチ運用のルール(Git flow, GitHub flow, GitLab flow)などは決めた方がいいと思います。

Discussion