본문 바로가기
컴퓨터 & IT (Computer & IT)/Github

[Github] 서버 저장소 관련 내용 정리

by Physics 2021. 3. 7.
728x90

아래 내용은 "Git 교과서" 책을 정리한 글 입니다.


1. 서버 저장소 (Remote Repository)

- 원격 저장소라 불리며 로컬 저장소의 코드를 복제한 복사본이다. 
- 서버 저장소를 통해 코드를 보관 및 다른 사람들과 협업 및 공유할 수 있다. 
- 서버 저장소를 통해서 자신의 로컬 저장소를 백업하는 용도로 사용할 수 있다. 

2. 깃 허브 (Git Hub) 

- 대표적인 깃호스팅 서비스 사이트이며 깃 허브의 대부분의 서비스를 무료로 사용할 수 있음.
- 일반적인 개별 깃 허브의 주소는 다음과 같다: https://github.com/<사용자이름>  
- 공개 저장소의 경우 무제한으로 무료로 사용할 수 있지만, 비공개 저장소의 경우 일부 유료 서비스이다. 
- 한 소유주 안에서 같은 저장소 이름은 중복하여 생성할 수 없음 
-  저장소의 이름은 영문 대소문자, 숫자, 하이픈, 밑줄 조합으로 만들어진다. 

3. 깃허브 연동 및 원격 등록 

1) 로컬 저장소 

로컬 저장소를 원격 저장소에 연결하는 방법은 크게 두 가지이다. 
  • 새로운 로컬 저장소를 생성하고 원격 저장소를 연결하는 방법 
  • 기존 저장소를 연결하는 방법 

2) 프로토콜 

깃은 서버와 통신할 수 있는 다양한 프로토콜을 제공하며 기본적으로 다음 4 종류의 전송방식을 지원한다; Local, HTTP, SSH, GIT

프로토콜 설명
Local (a) 로컬 컴퓨터에 원격 저장소를 생성함
(b) 자신의 컴퓨터를 NFS 서버로 이용할 경우 편리함
(c) 로컬 저장소를 서버로 이용하는 경우, 아래의 명령어처럼 폴더 경로만 입력하면 됨
   : $git remote add <원격저장소 별칭> <폴더 경로>
HTTP 서버에 접속하기 위해서 로그인 절차를 거쳐야 하며, HTTP는 기존 아이디와 비밀번호 만으로 접속자를 인증처리할 수 있음 
SSH (a) 깃에서 권장하는 프로토콜 
(b) 높은 수준의 보안 통신으로 처리하며 깃 서버를 안전하게 운영할 수 있음 
(c) SSH 프로토콜을 사용하기 위해선, 주소 앞에 ssh://계정@주소처럼 프로토콜 타입을 지정해야 함 
(d) SSH 접속을 하는 경우에는 인증서를 만들어 사용하며, 공개키는 서버에 등록되며 로컬키는 로컬에 저장됨 
GIT (a) Git의 데몬 서비스를 위한 전용 프로토콜 방식
(b) SSH와 유사하지만 인증 시스템이 없어 취약하다는 단점이 존재



3) 원격 저장소와 관련된 명령어 

※ 원격 저장소의 주소와 별칭 
 별칭: 서버의 긴 URL 주소를 간략한 별칭으로 만들어 사용하며 별칭은 중복되지 않아야 한다. 

  $git remote : 현재 연결된 원격 저장소의 목록을 확인 (원격 저장소의 이름을 출력) 
 • $git remote -v : 원격 저장소 별칭 이름과 URL을 확인 
 • $git remote add <원격 저장소 별칭> <원격 저장소 URL> : 원격 저장소와 연결 또는 등록 
     - 원격 저장소가 연결이 되면, fetch와 push 두 주소를 출력함 
     - push: 서버로 전송하는 동작 
     - fetch: 서버에서 가져오는 동작 
     - 원격 저장소를 등록하면 로컬 저장소에 브랜치가 추가적으로 생성됨 
 • $git remote rename <변경 전 별칭> <변경 후 별칭> : 로컬저장소에 등록된 원격 저장소 별칭을 변경함.  
 • $git remote show <원격 저장소 별칭> : 원격 저장소에 대한 상세 정보를 출력함 
 • $git remote rm <원격 저장소 별칭> : 등록된 원격저장소를 삭제함. 
 

4) 서버 전송 및 내려받기 

  (1) 원격 서버로 전송: Push

    • 원격 저장소로 커밋된 파일들을 업로드하는 동작 
    • 로컬 저장소의 내용을 원격 저장소로 전송함 
    • 원격 저장소로 push를 하기 위해선, 반드시 자신의 로컬 저장소를 최신 상태로 유지해야 한다. 
      - push를 할 자신의 로컬 저장소의 커밋이 원격 저장소의 커밋보다 최신이어야 함 
      - 만일, 자신의 커밋이 원격 저장소의 커밋보다 늦은 경우, 원격 저장소로 push가 되지 않음 
      - 최신 상태에서만 푸쉬를 허용하는 이유: 충돌을 방지하기 위해서
      - Pull과 Push를 자주하여 충돌을 최소한으로 줄여나가면서 작업을 유지해야 함. 
    • Push 명령어: $git push <원격 저장소 별칭> <브랜치 이름> 
   ex) 원격 저장소의 별칭이 "origin" 이고 현재 로컬 저장소의 master 브랜치를 원격 서버로 전송하는 경우, 

$git push origin master

 

  (2) 원격 서버로부터 내려받기: Clone, pull, fetch

원격 서버로부터
내려받기
설명
clone • 명령어: $git clone <원격 저장소의 URL> <새로 생성한 로컬 디렉토리> 
  ex) 만일 나의 원격 저장소의 url이 https://github.com/xxxx/xxxx이고 현재의 디렉토리로 복사한다고 하면, 
       $git clone https://github.com/xxxx/xxxx
• 기존 저장소를 이용하여 새로운 저장소를 생성하는 방법 
• 로컬 저장소를 생성한 후, 처음으로 코드를 내려받을 때, clone 명령어를 사용하면 편리함 
• 초기화 명령어인 init 이외에 원격 서버 접속에 필요한 추가 설정을 자동으로 수행 
원격 서버와 연결을 마친 후, 모든 커밋된 코드 이력을 내려받음 
pull • 명령어: $git pull
로컬 저장소보다 최신인 갱신된 원격 저장소의 커밋 정보를 현재 로컬 저장소로 내려받음
• pull을 주기적으로 사용하면, 최신 커밋 정보로 로컬 저장소를 유지할 수 있음 
fetch • 명령어: $git fetch <원격저장소 URL>
• 원격 저장소에서 코드를 수동으로 내려받는 작업 
  - pull 명령어로 자동으로 브랜치 병합을 하지 못하는 경우에는 fetch 명령어로 수동으로 브랜치 병합을 시켜줘야 함. 
• fetch에서는 원격저장소로부터 데이터만 받을 뿐, 로컬 저장소의 브랜치와과 병합하지 않음 
  - fetch로 내려받은 커밋을 브랜치 병합을 하려 할 때에는 merge 명령어를 사용함 
  - merge 명령어: $ git merge <원격 저장소 별칭>/<브랜치이름>

Push 및 Pull을 추가한 git의 workflow

 

728x90

댓글