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 두 개의 키를 생성했습니다. 첫 번째 키는 비공개 (예 : id_rsa)이고 두 번째 키는 공개 (예 : id_rsa.pub)입니다.
Note: 개인 키를 다른 사람과 공유하지 마십시오.
authorized_keys에 키 추가
한 프로젝트에 두 명의 개발자, 즉 Tom과 Jerry가 있다고 가정합니다. 두 사용자 모두 공개 키를 생성했습니다. 이러한 키를 인증에 사용하는 방법을 살펴 보겠습니다.
Tom은 다음을 사용하여 자신의 공개 키를 서버에 추가했습니다. 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.
마찬가지로 Jerry는 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.
리포지토리에 변경 사항 푸시
서버에 베어 리포지토리를 만들고 두 명의 사용자에게 액세스를 허용했습니다. 이제부터 Tom과 Jerry는 변경 사항을 원격으로 추가하여 저장소에 푸시 할 수 있습니다.
Git init 명령 생성 .git 저장소에서 구성을 읽을 때마다 저장소에 대한 메타 데이터를 저장할 디렉토리 .git/config 파일.
Tom은 새 디렉토리를 만들고 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
Tom은 git log 명령을 실행하여 로그 메시지를 확인합니다.
[tom@CentOS tom_repo]$ git log
위의 명령은 다음과 같은 결과를 생성합니다.
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Tom은 자신의 변경 사항을 로컬 저장소에 커밋했습니다. 이제 변경 사항을 원격 저장소로 푸시 할 때입니다. 하지만 그 전에 저장소를 원격으로 추가해야합니다. 이것은 일회성 작업입니다. 그런 다음 변경 사항을 원격 저장소로 안전하게 푸시 할 수 있습니다.
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
이제 변경 사항이 원격 저장소에 성공적으로 커밋됩니다.