육감적 코딩

[Git 교과서]5장. 서버 본문

정리/Git

[Git 교과서]5장. 서버

감감감감감감 2021. 11. 21. 21:54

5.1 서버 저장소

서버 저장소는 다른 말로 원격(remote) 저장소라고도 합니다.

5.1.1 협업 저장소

깃은 여러 개발자와 협업하려고 탄생한 도구입니다.

인터넷에 연결하여 작업할 수 없는 개발환경도 많이 있기때문에 이 두 가지 환경을 고려하여 분산형 모델을 선택했습니다.

5.1.2 연속된 작업

서버 저장소는 여러 컴퓨터에 동일한 깃 저장소를 복제하고, 작업한 결과물을 다시 서버로 통합합니다.

5.1.3 새 멤버

새 멤버가 추가 되어도 깃은 깃의 원격 저장소 주소만 알려 주면 모두 해결됩니다.

5.2 깃허브 서버 준비

5.2.2 저장소 생성

한 소유자 안에서 같은 저장소 이름은 중복하여 생성할 수 없습니다.

5.3 깃허브 연동 및 원격 등록

5.2.1 로컬 저장소

로컬 저장소를 원격 저장소에 연결하는 방법

  1. 새로운 로컬 저장소를 생성하고 원격 저장소를 연결하는 방법
  2. 기존 저장소를 연결하는 방법

5.3.2 프로토콜

서버와 통신하려면 프로토콜을 사용해야 합니다.

깃은 기본적으로 Local, HTTP, SSH, Git 네 종류의 전송 방식을 지원합니다.

Local

로컬 컴퓨터에 원격 저장소를 생성하는 것을 의미합니다. 자신의 컴퓨터를 NFS 등 서버로 이용할 때 편리합니다.

$ git remote add 원격저장소별칭 폴더경로

HTTP

HTTP는 SSH처럼 많이 사용하는 프로토콜 중 하나 입니다. 서버에 접속하려면 로그인 절차를 거쳐야 합니다. HTTP는 익명으로도 처리할 수 있으며, 계정을 이용하여 처리할 수도 있습니다.

SSH

SSH는 깃에서 권장하는 프로토콜로, 높은 수준의 보안 통신으로 처리하기 때문에 깃 서버를 좀 더 안전하게 운영할 수 있습니다.

SSH 접속을 할 때는 인증서를 만들어 사용합니다. 인증서의 공개키는 서버에 등록하며, 개인키는 로컬에 저장합니다.

SSH는 HTTP와 달리 익명으로 접속할 수 없습니다.

Git

SSH와 유사하지만 인증 시스템이 없어 보안에 취약할 수 있습니다. 실제로 이 프로토콜은 잘 사용하지 않는 편입니다.

5.3.3 원격 저장소의 리모트 목록 관리

remote 명령어를 독립적으로 사용하면 연결된 원격 저장소의 이름(별칭)을 출력합니다.

$ git remote

-v 옵션을 같이 사용하면 원격 저장소의 별칭 이름과 URL을 확인할 수 있습니다.

$ git remote -v

5.3.4 주소와 별칭

  • 별칭: 원격 긴 서버의 URL 문자열을 간략하게 문자열 별칭으로 만들어 사용할 수 있습니다.
  • origin: 대표적으로 사용하는 별칭입니다. 자신의 목적에 따라 다른 이름을 사용해도 됩니다.

5.3.5 원격 저장소에 연결

원격 저장소와 연결하려면 add 옵션을 사용합니다.

$ git remote add 원격저장소별칭 원격저장소URL

원격 저장소가 연결되면 fetch와 push 두 주소를 출력합니다. push는 서버로 전송을, fetch는 서버에서 가지고오는 동작을 의미합니다.

5.3.7 별칭 이름 변경과 정보

서버의 별칭 이름은 변경할 수 있습니다.

$ git remote rename 변경전 변경후

5.3.8 원격 서버 삭제

로컬 저장소는 복수의 원격 저장소와 연결 할 수 있습니다. 깃을 사용하다보면 풀 리퀘스트, 테스트 등 목적으로 임시 등록된 원격 저장소들도 있습니다.

$ git remote rm 원격저장소별칭

5.4 서버 전송

5.4.1 push: 서버에 전송

원격 저장소로 로컬 깃 저장소의 내용을 전송할 때는 push 명령어를 사용합니다.

$ git push 원격저장소별칭 브랜치이름

별칭 이름을 가지는 서버의 master 브랜치에 현재 브랜치를 업로드 합니다.

혼자 개발할 때도 백업을 위해 원격 저장소를 같이 사용하면 좋습니다.

5.5 자동으로 내려받기

5.5.1 clone: 복제

복제할 때는 clone 명령어를 사용합니다.

$ git clone 저장소주소

로컬 저장소를 생성 후, 처음으로 서버에서 코드를 내려받을 때는 clone 명령어를 사용하면 좀 더 편합니다.

5.2.2 pull: 서버에서 내려받기

복제 후 원격 저장소의 갱신된 내용을 추가로 내려받으려면 pull 명령어를 사용해야 합니다.

$ git pull

5.6 수동으로 내려받기

원격 저장소 내용을 내려받는 방법은 pull 과 fetch 입니다.

이 장에서는 페치 병합 방법만 알고 갑니다.

5.6.1 자동 병합

풀은 원격 서버에서 현재 커밋보다 더 최신 커밋 정보가 있을 때 내려받습니다.

여러 개발자와 협업을하는 과정에서 pull명령어가 자동으로 브랜치 병합을 못하고 충돌이 발생하기도 합니다. 이럴때 페치 방식을 사용해야 합니다.

5.6.2 fetch: 가져오기

페치는 원격 저장소에서 커밋된 코드를 임시 브랜치로 내려받습니다. 내려받은 후 현재 브랜치와 자동 병합하지 않습니다.

$ git fetch 원격저장소URL

원본 저장소에서 파일을 수정 한 뒤에(look sky커밋 추가), 복제된 로컬 저장소로 이동하여 페치를 합니다.

$ git fetch 
$ git log 

5

pull 명령어와 달리 fetch 명령어를 실행한 후에는 커밋이 추가된 것을 확인할 수 없습니다. 페치는 원격 저장소의 커밋들만 가지고 왔을 뿐 로컬 저장소에서 어떤 작업도 하지 않았습니다.

5.6.3 merge 명령어로 수동 병합

페치는 데이터를 내려받기만 할 뿐 자동 병합하지 않습니다.

내려받은 커밋을 로컬 저장소에 적용하려면 병합 명령을 실행해야 하는데, merge 명령어를 사용합니다.

$ git merge 원격저장소별칭/브랜치이름

5.7 순서

원격 저장소에는 다수의 개발자가 동시에 커밋을 푸시할 수 없습니다. 순차적으로 이루어 져야합니다.

5.7.1 최신 상태

저장소에 푸시하려면 자신의 로컬 저장소를 최신 상태로 유지해야 합니다.

푸시는 서버의 마지막 커밋과 푸시되는 커밋을 병합하기 때문입니다.

커밋이 순차적이지 않을 때 깃은 푸시 동작을 거부합니다.

5.7.2 충돌 방지

깃이 최신 상태에서만 푸시를 허용하는 것은 충돌을 방지하기 위해서입니다.

push 명령어를 사용할 때는 충돌을 최소화하기 위해 미리 원격 저장소를 확인 합니다. 새로운 커밋 갱신이 없는지 pull 명령어를 사용하여 지속적으로 확인하는 것이 좋습니다.

권장순서
pull → coding → commit → pull → push

'정리 > Git' 카테고리의 다른 글

[Git 교과서]7장. 임시 처리  (0) 2021.11.30
[Git 교과서]6장. 브랜치  (0) 2021.11.23
[Git 교과서]4장. 커밋  (0) 2021.11.21
[Git 교과서]3장. 깃 개념 잡기  (0) 2021.11.12
[Git 교과서]1장. 깃과 버전 관리  (0) 2021.11.12
Comments