Gitとは、プログラムのソースコードなどの変更履歴を管理する「バージョン管理システム」です。
また、Gitは「分散型バージョン管理システム」という特徴があり、複数人のチームで共同開発を行う場合に各メンバーの変更履歴を共有管理できます。
Gitでは、プログラムのソースコードや変更履歴は「リポジトリ」と呼ばれるデータベースでバージョン管理を行います。
チームで共同開発する場合は、メンバー全員がアクセスできる場所に共有の「リモートリポジトリ」を用意し、
各メンバーは、ローカル環境(自分のPCなど)の「ローカルリポジトリ」で開発を行い、
変更内容を「リモートリポジトリ」にアップロード(push)したり、
最新の内容を「リモートリポジトリ」からダウンロード(pull)したりすることで、
共同で開発作業を進めることができます。
「リモートリポジトリ」を簡単に公開できるサービスとして「GitHub」などが有名ですが、KAGOYA CLOUD のサーバーに「リモートリポジトリ」を置くことも可能です。
このマニュアルではCentOS7 のサーバー環境を例に説明します。
まず、KAGOYA CLOUDのコントロールパネルにログインし、CentOS7でインスタンスを作成します。
yum で Git をインストールします。
# yum install git
Git の初期設定をします。
# git config --global user.name "kagoya " # git config --global user.email kagoya@example.com
設定した内容を確認します。
# git config --list
Git 用にユーザーを作成します。
# useradd git
リポジトリを置くディレクトリを作成します。
# mkdir -pv /opt/git
git ユーザーが書き込みできるようにします。
# chown git:git /opt/git
git ユーザーに切り替えます。
# su git
リポジトリを置くディレクトリに移動します。
$ cd /opt/git
共有リポジトリを作成します。
$ git init --bare newproject Initialized empty Git repository in /opt/git/newproject/
このチュートリアルでは、Windows PC でGit for Windows を使用します。
下記のURLからダウンロードし、インストールしてください。
■ 参考URL Git for Windows:
https://git-for-windows.github.io/
インストールが完了したら、Git Bash(git-bash.exe)を起動します。
この Git 初期設定をします。
$ git config --global user.name "taro" $ git config --global user.email "taro@example.com"
Created directory '/c/Users/Git Bash(git-bash.exe)を使って、秘密鍵と公開鍵を生成します。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/taro/.ssh/id_rsa): ←Enter Created directory '/c/Users/taro/.ssh'. Enter passphrase (empty for no passphrase): ←入力せずEnter Enter same passphrase again: ←入力せずEnter Your identification has been saved in /c/Users/taro/.ssh/id_rsa. Your public key has been saved in /c/Users/taro/.ssh/id_rsa.pub.
(以下省略)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
生成された公開鍵の内容を表示します。
$ cat ~/.ssh/id_rsa.pub
表示された公開鍵の内容(赤枠部分)をコピーします。
サーバーに root でログインし、git ユーザーに切り替えます。
# su git
ホームディレクトリに移動します。
$ cd
git ユーザーのホームディレクトリに .ssh ディレクトリを作成します。
$ mkdir ~/.ssh
パーミッションを変更します。
$ chmod 700 ~/.ssh
vi エディタで authorized_keys ファイルを作成します。
$ vi ~/.ssh/authorized_keys
インサートモードで先ほどコピーした公開鍵の内容を貼り付けます。
パーミッションを変更します。
$ chmod 600 ~/.ssh/authorized_keys
Git Bash(git-bash.exe)を使って、リポジトリを作成するディレクトリを作成します。
$ mkdir ~/Desktop/newproject
作成したディレクトリに移動します。
$ cd ~/Desktop/newproject
リポジトリを作成します。
$ git init Initialized empty Git repository in C:/Users/kagoya/Desktop/newproject/.git/
Git Bash(git-bash.exe)を使って、作成したローカルリポジトリにテストファイルを作成します。
$ touch sample.txt
ステージング領域へ反映します。
$ git add .
ローカルリポジトリへコミットします。
$ git commit -m "initial commit" [master (root-commit) 707dad9] initial commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sample.txt
リモートリポジトリを"origin"という名前で設定します。
※ここでは例としてサーバーのIPアドレスを203.0.113.11とします。
$ git remote add origin git@203.0.113.11:/opt/git/newproject
ローカルリポジトリの内容をリモートリポジトリへ反映します。
$ git push origin master
The authenticity of host '203.0.113.11 (203.0.113.11)' can't be established.
ECDSA key fingerprint is SHA256:2Eu1uHhYgdMqBOXyTOsmDTi50TkvMUzEOgvuwrOt8Js.
Are you sure you want to continue connecting (yes/no)? yes ←初回のみyesでEnter
Warning: Permanently added '203.0.113.11' (ECDSA) to the list of known hosts.
Counting objects: 3, done.
Writing objects: 100% (3/3), 225 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 203.0.113.11:/opt/git/newproject
* [new branch] master -> master
Gitを使用するとリモートリポジトリの内容を別のローカル環境(PC 側)に複製し、開発環境を共有できます。
※ここでは仮に同じPCの別ディレクトリに複製できるかテストします。
Git Bash(git-bash.exe)を使って、リポジトリを複製するディレクトリに移動します。
$ cd ~/Desktop
ここでは、newproject2というディレクトリにリモートリポジトリを複製します。
$ git clone git@203.0.113.11:/opt/git/newproject newproject2 Cloning into 'newproject2'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done.
作成されたローカルリポジトリに移動します。
$ cd newproject2
リモートリポジトリを通してファイルが複製されているのが確認できます。
$ ls sample.txt