Git-作成操作

この章では、リモートGitリポジトリを作成する方法を説明します。以降、これをGitサーバーと呼びます。チームのコラボレーションを可能にするには、Gitサーバーが必要です。

新しいユーザーを作成する

# add new group
[root@CentOS ~]# groupadd dev

# add new user
[root@CentOS ~]# useradd -G devs -d /home/gituser -m -s /bin/bash gituser

# change password
[root@CentOS ~]# passwd gituser

上記のコマンドは次の結果を生成します。

Changing password for user gituser.
New password:
Retype new password:
passwd: all authentication token updated successfully.

ベアリポジトリを作成する

を使用して新しいリポジトリを初期化しましょう init コマンドに続いて --bareオプション。作業ディレクトリなしでリポジトリを初期化します。慣例により、ベアリポジトリには次の名前を付ける必要があります.git

[gituser@CentOS ~]$ pwd
/home/gituser

[gituser@CentOS ~]$ mkdir project.git

[gituser@CentOS ~]$ cd project.git/

[gituser@CentOS project.git]$ ls

[gituser@CentOS project.git]$ git --bare init
Initialized empty Git repository in /home/gituser-m/project.git/

[gituser@CentOS project.git]$ ls
branches config description HEAD hooks info objects refs

公開/秘密RSAキーペアを生成する

Gitサーバーを構成するプロセスを見ていきましょう。 ssh-keygen ユーティリティは、ユーザー認証に使用する公開/秘密RSAキーペアを生成します。

ターミナルを開き、次のコマンドを入力して、入力ごとにEnterキーを押します。正常に完了すると、.ssh ホームディレクトリ内のディレクトリ。

tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ ssh-keygen

上記のコマンドは次の結果を生成します。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/tom/.ssh/id_rsa): Press Enter Only
Created directory '/home/tom/.ssh'.
Enter passphrase (empty for no passphrase): ---------------> Press Enter Only
Enter same passphrase again: ------------------------------> Press Enter Only
Your identification has been saved in /home/tom/.ssh/id_rsa.
Your public key has been saved in /home/tom/.ssh/id_rsa.pub.
The key fingerprint is:
df:93:8c:a1:b8:b7:67:69:3a:1f:65:e8:0e:e9:25:a1 tom@CentOS
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
|
.
|
| Soo |
| o*B. |
| E = *.= |
| oo==. . |
| ..+Oo
|
+-----------------+

ssh-keygen は2つのキーを生成しました。最初のキーはプライベート(つまりid_rsa)で、2番目のキーはパブリック(つまりid_rsa.pub)です。

Note: 秘密鍵を他の人と共有しないでください。

authorized_keysへのキーの追加

プロジェクトに取り組んでいる2人の開発者、つまりトムとジェリーがいるとします。両方のユーザーが公開鍵を生成しました。これらのキーを認証に使用する方法を見てみましょう。

トムは、を使用して公開鍵をサーバーに追加しました ssh-copy-id 以下に示すコマンド-

[tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

上記のコマンドは次の結果を生成します。

[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

同様に、ジェリーはssh-copy-idコマンドを使用して公開鍵をサーバーに追加しました。

[jerry@CentOS ~]$ pwd
/home/jerry

[jerry@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]

上記のコマンドは次の結果を生成します。

[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

変更をリポジトリにプッシュする

サーバー上にベアリポジトリを作成し、2人のユーザーにアクセスを許可しました。今後、トムとジェリーは、リポジトリをリモートとして追加することで、変更をリポジトリにプッシュできます。

Gitinitコマンドは .git リポジトリから構成を読み取るたびにリポジトリに関するメタデータを格納するディレクトリ .git/config ファイル。

トムは新しいディレクトリを作成し、READMEファイルを追加して、最初のコミットとして変更をコミットします。コミット後、彼はを実行してコミットメッセージを確認しますgit log コマンド。

[tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ mkdir tom_repo

[tom@CentOS ~]$ cd tom_repo/

[tom@CentOS tom_repo]$ git init
Initialized empty Git repository in /home/tom/tom_repo/.git/

[tom@CentOS tom_repo]$ echo 'TODO: Add contents for README' > README

[tom@CentOS tom_repo]$ git status -s
?? README

[tom@CentOS tom_repo]$ git add .

[tom@CentOS tom_repo]$ git status -s
A README

[tom@CentOS tom_repo]$ git commit -m 'Initial commit'

上記のコマンドは次の結果を生成します。

[master (root-commit) 19ae206] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README

トムはgitlogコマンドを実行してログメッセージを確認します。

[tom@CentOS tom_repo]$ git log

上記のコマンドは次の結果を生成します。

commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530

Initial commit

トムは自分の変更をローカルリポジトリにコミットしました。次に、変更をリモートリポジトリにプッシュします。ただし、その前に、リポジトリをリモートとして追加する必要があります。これは1回限りの操作です。この後、彼は変更をリモートリポジトリに安全にプッシュできます。

Note−デフォルトでは、Gitは一致するブランチにのみプッシュします。ローカル側に存在するすべてのブランチについて、同じ名前のブランチがすでに存在する場合、リモート側が更新されます。チュートリアルでは、変更をプッシュするたびにorigin master ブランチ、要件に応じて適切なブランチ名を使用します。

[tom@CentOS tom_repo]$ git remote add origin [email protected]:project.git

[tom@CentOS tom_repo]$ git push origin master

上記のコマンドは次の結果を生成します。

Counting objects: 3, done.
Writing objects: 100% (3/3), 242 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:project.git
* [new branch]
master −> master

これで、変更がリモートリポジトリに正常にコミットされました。