はじめに
Git は、プロジェクトのバージョンを効率的に管理するために不可欠な、強力なオープンソースの分散バージョン管理システムです。独自の Git サーバーをセットアップすることは、Git の内部メカニズムへの理解を深めるだけでなく、プライベートプロジェクト管理のための安全な環境を提供します。このラボでは、Linux マシン上に Git サーバーをセットアップするプロセスをガイドします。GitHub のようなコードホスティングプラットフォームが利用可能ですが、プライベート Git サーバーは、あなたのデータがあなたの管理下で安全であることを保証します。
🎯 タスク
このプロジェクトでは、以下のことを学びます。
- Linux システムに Git をインストールおよび設定する方法
- Git 操作専用のユーザーを作成および管理する方法
- ローカルマシンと Git サーバー間の接続を保護するために SSH キーを生成および設定する方法
- ローカルおよびサーバー上で Git リポジトリを初期化および管理する方法
- 変更のコミットやリモートリポジトリへのプッシュなどのバージョン管理操作を実行する方法
- リポジトリをクローンしてすべてが正しく機能していることを確認することで、セットアップを検証する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- Linux 環境に分散バージョン管理システムである Git をインストールおよびセットアップする基本を理解する
- アプリケーション固有のタスクのために Unix/Linux システムでのユーザー権限とセキュリティを処理する
- リモートサーバーを管理する上で不可欠なスキルである SSH キーを使用したマシン間の安全な通信のためのテクニックを活用する
- Git 操作でサーバーサイドストレージに使用されるベアリポジトリを作成および管理する
- Git コマンドを使用してプロジェクトをコミットおよびバージョン管理し、これらの変更をリモートサーバーにプッシュする
- クローンおよびデータの整合性を検査することで、リモートリポジトリ管理における一般的な問題を検証およびトラブルシューティングする
Git のインストール
このステップでは、ローカルおよびリモートサーバーの両方として機能するマシンに Git をインストールします。この演習により、ローカルネットワークホスティングのために個人用コンピュータに Git サーバーをセットアップできるようになります。
## aptパッケージデータベースを更新し、最新のソフトウェアリストで作業していることを確認します
sudo apt-get update
## apt-getを使用してGitをインストールします
sudo apt-get install git
このコマンドは、パッケージリストを更新して、その後のすべてのインストールが最新であることを確認し、次にリポジトリを管理するバージョン管理システムである Git をインストールします。
Git ユーザーの設定
管理を容易にするために、Git 操作専用の新しいユーザーを作成し、その作業ディレクトリを設定します。
## Git操作用の新しいユーザーを作成します
sudo useradd labex-git
sudo passwd labex-git
Git ユーザーのパスワードを設定します(例:「labex」)。パスワードは 2 回入力する必要があります。
次に、Git ユーザーの作業ディレクトリを作成し、所有権を割り当てます。
sudo mkdir /home/labex-git
sudo chown -R labex-git:labex-git /home/labex-git
この一連のコマンドは、新しいユーザーを作成し、パスワードを設定し、Git 操作専用の作業ディレクトリを確立することで、リポジトリ管理が他のシステムアクティビティから分離されることを保証します。
SSH キーの生成
SSH キーを使用することで、操作ごとにユーザー認証情報を入力する必要がなくなり、Git 操作が簡素化されます。SSH キーペアを生成して設定しましょう。
## SSHキーペアを生成します
ssh-keygen -t rsa -C "labex@labex.io"
すべてのプロンプトで Enter キーを押して、デフォルト設定を使用します。次に、公開キーを Git ユーザーのマシンに送信します。
cat ~/.ssh/id_rsa.pub | ssh labex-git@localhost 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
ここで「yes」と入力し、以前に設定したパスワードを入力してください。
このステップでは、SSH キーペアを生成し、ローカルとリモートのセットアップ間の接続を保護します。公開キーは Git サーバーの承認済みリストに追加され、各操作でパスワードを必要とせずに安全な通信が可能になります。
リモートリポジトリの作成
次に、Git ユーザーに切り替えて、サーバーサイドストレージに適したベアリポジトリを設定します。
## Gitユーザーに切り替えます
su labex-git
設定したパスワードを入力してください。
これで、リポジトリフォルダを作成し、ベアリポジトリを初期化できます。
mkdir -p /home/labex-git/project.git
cd /home/labex-git/project.git
git init --bare
このコマンドシーケンスは、現在のユーザーを Git ユーザーに切り替え、リポジトリ用の新しいディレクトリを作成し、ベアリポジトリを初期化します。このセットアップは、Git サーバーが作業コピーを維持せずに送信されたすべてのデータを格納するため、データのプッシュとプルに最適であるため、Git サーバーにとって重要です。
ローカルリポジトリの設定
このステップでは、お使いのコンピューターにローカルリポジトリを設定します。このプロセスは、コードホスティングプラットフォームで行う典型的な操作と同様です。
まず、Git ユーザーから通常のユーザーに戻ります。
## Gitユーザーから抜けます
exit
次に、プロジェクト用のディレクトリを作成し、Git リポジトリを初期化しましょう。
## プロジェクト用のディレクトリを作成します
mkdir -p /home/labex/project/labex_project
cd /home/labex/project/labex_project
## Gitリポジトリを初期化します
git init
これにより、指定されたディレクトリに新しい Git リポジトリが設定され、プロジェクトのローカルリポジトリとして機能します。
Git ユーザーの詳細を設定します。
## Gitのユーザー名を設定します
git config --global user.name "labex"
## Gitのメールアドレスを設定します
git config --global user.email "labex@labex.io"
このステップにより、すべてのコミットがユーザー名とメールアドレスとともに記録され、変更の追跡が容易になります。
コミットプロセスをテストするためのファイルを作成します。
## テストドキュメントを作成します
echo "I am Labex Readme Doc" > readme.md
このコマンドは、readme.md という名前の簡単なテキストファイルを作成し、サンプルメッセージを含みます。これは、リモートリポジトリへのコミットとプッシュプロセスをテストするために使用します。
変更のコミットとプッシュ
リポジトリの初期化と Git 設定の完了後、最初の変更をコミットしてプッシュする時間です。
## すべての変更をステージングに追加します
git add .
## 変更をコミットします
git commit -m "Initial commit"
## リモートリポジトリを追加します
git remote add origin labex-git@localhost:/home/labex-git/project.git
これで、変更をリモートリポジトリにプッシュできます。
git push origin master
セットアップの確認
最後に、リポジトリをクローンして、コミットがリモートサーバーに正しくホストされていることを確認しましょう。
## クローンディレクトリに移動します
cd /home/labex/project
## リポジトリをクローンします
git clone labex-git@localhost:/home/labex-git/project.git
/home/labex/project パスに新しいリポジトリがクローンされ、その中に readme.md ファイルがあることが確認できます。
まとめ
この実験では、Linux システム上での Git サーバーのセットアップと設定、SSH キーの管理、そしてリポジトリの初期化、変更のコミット、リモートサーバーへのプッシュといった典型的な Git 操作の方法を学びました。この演習を通して、Git サーバーのセットアップと使用の完全なライフサイクルを実証し、独自のコードリポジトリを安全に管理するための強固な基盤を提供しました。ここで習得したスキルは、ソフトウェア開発において基本的であるだけでなく、プライベートで安全な環境でのプロジェクトバージョン管理への理解を深めることにもつながります。



