Git は、共有リポジトリを使うと、複数人で一つのリポジトリを使用することができます。
サーバ (共有リポジトリ)
・バックアップでは /home/project1.git/ を退避する。
項目 内容 備考 OS CentOS 8.3.2011 本稿記述時の最新バージョン IP アドレス 192.168.11.100 - 接続プロトコル ssh ssh の標準ポートは 22 番。本稿ではこれを明示して扱っている。 プロジェクト グループ名 project1 - 共有リポジトリ /home/project1.git/ Git で共有リポジトリを作成する場合は、
ディレクトリ名の末尾が ~.git と決められている。メンバ 1 ID dev1 この ID を使用して共有リポジトリにアクセスする。 パスワード password - ホームディレクトリ /home/project.users/dev1/ メンバは通常ユーザで構わないが、本稿では別ディレクトリにまとめる。
クライアント (メンバ)
項目 内容 備考 OS CentOS 8.3.2011 本稿記述時の最新バージョン IP アドレス 192.168.11.110 本稿では使用しない。(クライアントが別の PC であることを明示しているのみ) メンバ 1 名前 Who Ami - メールアドレス who@example.jp -
1-1. Git のバージョンを確認
$ which git1-2. 共有リポジトリの作成
$ git --version
/usr/bin/git
git version 2.27.0
$ su1-3. プロジェクト参加メンバを用意
# mkdir /home/project1.git
# groupadd project1
# chgrp project1 /home/project1.git/
# git init --bare --shared /home/project1.git/
# ls -ld /home/project1.git/
Initialized empty shared Git repository in /home/project1.git/
# exitパーミッションが 2775 になっている。
drwxrwsr-x. 7 root project1 119 2月 12 02:15 /home/project1.git/
$
1-3-1. プロジェクト参加メンバの収容ディレクトリを作成
$ su1-3-2. プロジェクト参加メンバのアカウントを作成
# mkdir /home/project.users
# useradd dev1 -d /home/project.users/dev1
# usermod dev1 -a -G project1
# passwd dev1
# exit
ユーザー dev1 のパスワードを変更。 新しいパスワード: password⏎ 新しいパスワードを再入力してください: password⏎ passwd: すべての認証トークンが正しく更新できました。
$
2-1. Git のバージョンを確認
$ which git2-2. Git の利用情報を設定
$ git --version
/usr/bin/git
git version 2.27.0
$ git config --global user.email "who@example.jp"2-3. 最新のファイル群をサーバから取り寄せる
$ git config --global user.name "Who Ami"
$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.status auto
$ cat ~/.gitconfig
[user] email = who@example.jp name = Who Ami [color] branch = auto diff = auto status = auto
$ git clone ssh://dev1@192.168.11.100:22/home/project12-4. テスト用ファイルを作成してサーバに転送する
(「:22」は省略が可能)
$ ls -ld ./project1
Cloning into 'project1'... dev1@192.168.11.100's password: password⏎ warning: You appear to have cloned an empty repository.
空っぽのリポジトリをクローンしたと警告されている。
まだファイルを一つも置いていないので、空っぽは当然。
$ cat ./project1/.git/configclone によって、プロジェクトディレクトリが自動作成された。
drwxrwxr-x. 3 who who 18 2月 12 13:56 ./project1
(まだ空っぽだが) このディレクトリの中でファイル操作を行う。
clone によって、設定ファイルも自動作成された。
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = ssh://dev1@192.168.11.100:22/home/project1 fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
以降 git push/pull 等のリモートリポジトリに対する操作は、この設定ファイルが標準情報となる。
$ cd ./project1/2-5. 作成したテスト用ファイルを削除
project1$ date > ./test.txt
project1$ cat ./test.txt
project1$ git add ./test.txt
2021年 2月 12日 金曜日 14:21:32 JST
project1$ git commit -m "Created a test file"
project1$ git push
[master (root-commit) 0c52fb9] Created a test file 1 file changed, 1 insertion(+) create mode 100644 test.txt
project1$ cd ..
dev1@192.168.11.100's password: password⏎ Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 254 bytes | 254.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To ssh://192.168.11.100:22/home/project1 * [new branch] master -> master
$
$ cd ./project1
project1$ git rm test.txt
project1$ git commit -m "Remove a test file"
rm 'test.txt'
project1$ git push
[master f665361] Remove test file 1 file changed, 1 deletion(-) delete mode 100644 test.txt
project1$ cd ..
dev1@192.168.11.100's password: password⏎ Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (2/2), 198 bytes | 198.00 KiB/s, done. Total 2 (delta 0), reused 0 (delta 0), pack-reused 0 To ssh://192.168.11.100:22/home/project1 8270e1f..f665361 master -> master
$