CM/Git

Git 원격 저장소

2022. 8. 4. 15:49
목차
  1. 원격 저장소
  2. 원격 저장소 확인
  3. 원격 저장소 추가
  4. 리모트 브랜치
  5. Push
  6. Fetch
  7. Pull

원격 저장소

다른 사람과 협업을 하려면 원격 저장소가 필수적이다. 한 프로젝트 내에 원격 저장소가 여러 개 있을 수 있으며 원격 저장소의 push 권한, fetch 권한을 얻는다면 push 혹은 fetch 명령어를 사용할 수 있다. 

원격 저장소 확인

git remote 명령으로 프로젝트에 등록된 리모트 저장소를 확인 할 수 있다.

git remote -v 실행 결과

저장소를 clone 하면 리모트 저장소가 'origin'이라는 이름으로 자동 등록 된다.

원격 저장소 추가

git remote add <단축이름> <url> 명령으로 url에 위치한 저장소를 원격 저장소로 등록한다.

git remote add 실행 결과

리모트 브랜치

로컬 저장소의 브랜치 종류는 non-tracking local branch, tracking local branch, remote tacking branch로 나뉘며 리모트 저장소에는 오직 remote branch만 존재한다. remote branch와 remote tacking branch를 살펴보자.

  • remote branch : 리모트 저장소에 존재하는 브랜치이다. 다른 사람들이 볼 수 있어 fetch나 push 할 수 있다. 
  • remote tracking branch : 로컬 저장소에 존재하며 리모트 브랜치를 추적하는 브랜치이다. 즉 fetch 시 리모트 브랜치와 같은 커밋을 가리키도록 업데이트 된다.

원격 저장소를 추가하면 로컬 저장소에서도 리모트 브랜치와 태그를 확인 할 수 있어야한다. git은 이를 위해 리모트 트래킹 브랜치를 제공한다. 리모트 트래킹 브랜치는 리모트 브랜치를 추적하는 브랜치이다. 즉 리모트 서버에서 fetch로 데이터를 가져오면 리모트 트래킹 브랜치는 리모트 브랜치와 같은 커밋을 가리키도록 업데이트 된다. 리모트 트래킹 브랜치의 이름은 <remote>/<branch> 형식으로 되어있다. 예를 들어 리모트 저장소 origin의 master 브랜치를 확인하고 싶다면 fetch 한 뒤 origin/master 브랜치를 확인하면 된다. 그러면 fetch 한 시점의 리모트 저장소 origin의 master 브랜치를 확인 할 수 있다. 리모트 트래킹 브랜치는 오직 fetch 할 때만 움직이며 임의로 움직일 수 없다.

 

예를 들어보자. 원격 저장소 git.ourcompany.com을 내 컴퓨터로 clone하면 로컬 저장소의 각 브랜치는 다음의 커밋을 가리킨다. (clone시 origin이라는 이름으로 원격 저장소가 추가된다.)

clone시 내 로컬 저장소 히스토리

그 후 로컬 저장소에 작업을 진행하는데 누군가 리모트 저장소 origin에 push하면 아래와 같은 히스토리를 갖게 될 것이다.

각자 다른 히스토리

이 상태에서 git fetch origin 명령어를 실행하면 리모트 트래킹 브랜치 origin/master가 아래와 같이 업데이트 된다.

fetch 후 내 로컬 저장소 히스토리

이와 같이 원격 저장소에 있는 리모트 브랜치는 로컬 저장소에서 리모트 트래킹 브랜치로 확인 가능하다. 리모트 트래킹 브랜치를 통해 리모트 브랜치가 어떤 히스토리를 가졌으며 어떤 커밋을 가리키는지 확인 할 수 있다.

Push

로컬 브랜치를 리모트 브랜치로 전송하려면 git push <remote> <branch> 명령을 사용한다. 원격 저장소의 push 권한이 있어야한다. git push origin serverfix시 로컬 브랜치 serverfix를 리모트 브랜치 serverfix로 전송한다. 이때 중요한 점은 전송한 로컬 브랜치를 리모트 브랜치에서 fast-forward 방식으로 병합되도록 해야한다. 그렇지 않으면 push에 실패한다. 즉 다른 누군가가 리모트 브랜치에 push했다면 push하기 전에 fetch한 뒤 리모트 트래킹 브랜치와 merge 후 push 해야한다.

 

만약 로컬 브랜치와 리모트 브랜치의 이름이 다르다면 push 명령어를 아래와 같이 사용한다.

로컬 브랜치 serverfix를 리모트 브랜치 awesomebranch로 전송한다. 

git push origin serverfix:awesomebranch

Fetch

원격 저장소로부터 데이터를 받으려면 git fetch <remote> 명령을 사용한다. 로컬 저장소가 갖고 있지 않은 새로운 데이터가 있다면 해당 데이터를 다운로드하고 리모트 트래킹 브랜치가 업데이트 된다. 이 후 리모트 트래킹 브랜치로 체크아웃 하거나 로컬 브랜치에서 merge 할 수 있다.

Pull

fetch와 merge를 한꺼번에 해주려면 git pull <remote> 명령을 사용한다. 일반적으로 pull 명령어를 사용해 fetch와 merge를 한꺼번에 하는 것 보다 fetch와 merge를 명시적으로 쓰는게 더 좋다.

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

Git 히스토리 삭제  (0) 2024.05.31
Git branch  (0) 2022.08.01
Git 원리 (add,commit,status)  (0) 2022.08.01
Git 기초  (0) 2022.07.31
  1. 원격 저장소
  2. 원격 저장소 확인
  3. 원격 저장소 추가
  4. 리모트 브랜치
  5. Push
  6. Fetch
  7. Pull
'CM/Git' 카테고리의 다른 글
  • Git 히스토리 삭제
  • Git branch
  • Git 원리 (add,commit,status)
  • Git 기초
gunjoon98
gunjoon98
gunjoon98
하루한방울
gunjoon98
전체
오늘
어제
  • 분류 전체보기 (139)
    • Computer Science (60)
      • Network (14)
      • DataBase (12)
      • Algorithm (14)
      • OS (9)
      • Computer Terminology (1)
      • DataStructure (10)
    • Spring (24)
      • Spring Basic (2)
      • Spring MVC (11)
      • Spring DB (4)
      • Spring Security (2)
      • Spring Test (1)
      • Spring Legacy (2)
      • 기타 (2)
    • Java (9)
      • Basic (7)
      • OOP (0)
    • WEB (14)
      • CSS (4)
      • JS (0)
      • HTTP (10)
    • PS (11)
      • 종만북 (10)
      • 모의 코테 (0)
      • 오답노트 (1)
    • Linux (6)
      • Ubuntu (6)
    • CM (5)
      • Git (5)
    • Project (0)
      • Deubot (0)
      • Scoreboard (0)
    • Infra (5)
      • Cloud (1)
      • CI&CD (3)
      • 쿠버네티스 (1)
    • Hadoop Echo System (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
gunjoon98
Git 원격 저장소
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.