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場所)
- 作成手順
- 事前準備(root, proejet_all, develop, remoteフォルダの作成)
- 疑似リモートリポジトリの作成
- project_allフォルダ内のgit初期化
- 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