<졸업프로젝트> 3. git 협업 공부하기 - Pull/Push

돔푸·2024년 3월 26일

졸업프로젝트

목록 보기
3/6

이전에 적었던 Merge가 '내 로컬 - 내 로컬'에서의 작업이었다면, 이번에 공부한 Pull/Push는 '내 로컬 - 내 원격' 사이의 작업이다.

원격 레포지토리 만들기

원격 레포지토리로는 Github를 사용하겠다.
먼저 간단하게 pullpush라는 이름의 원격 레포지토리를 하나 만든다.

이렇게 생성된 원격 레포지토리와 상호작용하는 명령어가 pull/push인 것이다.
로컬 레포지토리의 세팅을 완료하고 상호작용해보자.

로컬 레포지토리 세팅하기

file 하나를 생성하고 커밋을 생성하자.

$ mkdir pullpush
$ cd pullpush
$ git init
$ touch file
$ git add .
$ git commit -m "a created"

이렇게 로컬 레포지토리의 작업이 끝났다. 이것을 원격 레포지토리에 반영하고 싶을 때 사용하는 명령어가 'push' 명령어이다. (원격 레포지토리로 미는 것)

원격 레포지토리 등록 후 Push 하기

원격 레포지토리(Github)에 보면 이렇게 https 주소가 있다. 이것을 통해서 로컬 레포지토리와 원격 레포지토리를 연결하게 된다.

$ git remote add origin https://github.com/Dompoo/pullpush.git
$ git push origin main

원격 레포지토리에 해당 주소를 origin 이란 이름으로 추가하고,
origin 이란 이름의 원격 레포지토리의 main 브랜치에 변경 사항을 반영한다.
라는 의미의 명령어이다. 결과는 아래와 같다.
잘 반영되었다!

pull은 반대로 원격 레포지토리의 변경 사항을 로컬 레포지토리로 내려받는 것이다. 다른 사람이나 다른 브랜치에서 작업해서 원격 레포지토리의 내용이 로컬 레포지토리 보다 최신일 경우에 사용한다. 상황을 만들어보자.

Pull 환경 만들기

develop 브랜치를 만든 후, main 브랜치에서 작업하여 develop 브랜치가 1커밋 느리게 만든다.

$ git branch develop
$ touch b
$ git add .
$ git commit -m "b created"

그 후에 develop 브랜치와 main 브랜치의 로그를 비교해보면,
develop 브랜치에서는 커밋이 하나만 보이고, main 브랜치에서는 커밋이 두개 모두 잘 보인다. 즉, develop 브랜치가 main 브랜치보다 느리다!
이때, main 브랜치에서 push 까지 진행하여 원격 브랜치도 최신으로 맞춰주겠다.

$ git checkout main
$ git push origin main

이후 main에서 로그를 보면, 원격 브랜치도 develop 브랜치보다 앞서고 있는 것을 볼 수 있다.

이제 내가 develop 브랜치에서 작업하고 싶다고 하면, 원격 레포지토리의 정보를 받아와서 최신으로 맞춰주는 작업이 필요하다. 이때 사용하는 것이 Pull이다.

Pull 하기

develop 브랜치로 전환 후, pull을 해보자.

$ git checkout develop
$ git pull origin main

develop 브랜치에 Pull이 잘 이루어졌다. 로그는 아래와 같다.
Pull이 정상적으로 이루어져서 develop 브랜치도 최신 커밋에 위치한다.

정리

  • Push : 로컬이 최신일 때, 로컬의 변경 사항을 원격에 저장
  • Pull : 원격이 최신일 때, 원격의 변경 사항을 로컬에 저장
profile
나중에 또 모를 것들 모음

0개의 댓글