Git - Tạo hoạt động

Trong chương này, chúng ta sẽ xem cách tạo một kho lưu trữ Git từ xa; từ bây giờ, chúng tôi sẽ gọi nó là Git Server. Chúng tôi cần một máy chủ Git để cho phép cộng tác nhóm.

Tạo người dùng mới

# 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

Lệnh trên sẽ cho kết quả như sau.

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

Tạo kho lưu trữ trần

Hãy để chúng tôi khởi tạo một kho lưu trữ mới bằng cách sử dụng init lệnh theo sau bởi --bareLựa chọn. Nó khởi tạo kho lưu trữ mà không có thư mục làm việc. Theo quy ước, kho lưu trữ trống phải được đặt tên là.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

Tạo cặp khóa RSA công khai / riêng tư

Hãy để chúng tôi hướng dẫn về quá trình định cấu hình máy chủ Git, ssh-keygen tiện ích tạo cặp khóa RSA công khai / riêng tư, mà chúng tôi sẽ sử dụng để xác thực người dùng.

Mở một thiết bị đầu cuối và nhập lệnh sau và chỉ cần nhấn enter cho mỗi đầu vào. Sau khi hoàn thành thành công, nó sẽ tạo ra một.ssh thư mục bên trong thư mục chính.

tom@CentOS ~]$ pwd
/home/tom

[tom@CentOS ~]$ ssh-keygen

Lệnh trên sẽ cho kết quả như sau.

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 đã tạo hai khóa, khóa đầu tiên là riêng tư (tức là id_rsa) và khóa thứ hai là công khai (tức là id_rsa.pub).

Note: Không bao giờ chia sẻ KHÓA RIÊNG TƯ của bạn với người khác.

Thêm khóa vào các khóa được ủy quyền

Giả sử có hai nhà phát triển làm việc trong một dự án, đó là Tom và Jerry. Cả hai người dùng đã tạo khóa công khai. Hãy để chúng tôi xem cách sử dụng các khóa này để xác thực.

Tom đã thêm khóa công khai của mình vào máy chủ bằng cách sử dụng ssh-copy-id lệnh như dưới đây -

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

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

Lệnh trên sẽ cho kết quả như sau.

[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.

Tương tự, Jerry đã thêm khóa công khai của mình vào máy chủ bằng cách sử dụng lệnh ssh-copy-id.

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

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

Lệnh trên sẽ cho kết quả như sau.

[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.

Đẩy các thay đổi vào Kho lưu trữ

Chúng tôi đã tạo một kho lưu trữ trống trên máy chủ và cho phép hai người dùng truy cập. Từ bây giờ, Tom và Jerry có thể đẩy các thay đổi của họ vào kho lưu trữ bằng cách thêm nó làm điều khiển từ xa.

Lệnh Git init tạo .git thư mục để lưu trữ siêu dữ liệu về kho lưu trữ mỗi khi nó đọc cấu hình từ .git/config tập tin.

Tom tạo một thư mục mới, thêm tệp README và cam kết thay đổi của mình như cam kết ban đầu. Sau khi cam kết, anh ta xác minh thông báo cam kết bằng cách chạygit log chỉ huy.

[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'

Lệnh trên sẽ cho kết quả như sau.

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

Tom kiểm tra thông báo nhật ký bằng cách thực hiện lệnh git log.

[tom@CentOS tom_repo]$ git log

Lệnh trên sẽ cho kết quả như sau.

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

Initial commit

Tom đã cam kết các thay đổi của mình với kho lưu trữ cục bộ. Bây giờ, đã đến lúc đẩy các thay đổi vào kho lưu trữ từ xa. Nhưng trước đó, chúng ta phải thêm kho lưu trữ dưới dạng điều khiển từ xa, đây là thao tác một lần. Sau đó, anh ta có thể đẩy các thay đổi vào kho lưu trữ từ xa một cách an toàn.

Note- Theo mặc định, Git chỉ đẩy đến các nhánh phù hợp: Đối với mọi nhánh tồn tại ở phía cục bộ, phía từ xa sẽ được cập nhật nếu một nhánh có cùng tên đã tồn tại ở đó. Trong hướng dẫn của chúng tôi, mỗi khi chúng tôi đẩy các thay đổi đối vớiorigin master chi nhánh, sử dụng tên chi nhánh thích hợp theo yêu cầu của bạn.

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

[tom@CentOS tom_repo]$ git push origin master

Lệnh trên sẽ cho kết quả như sau.

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

Bây giờ, các thay đổi đã được cam kết thành công vào kho lưu trữ từ xa.