Git & Github 내용정리 (2)

허찬·2022년 3월 2일
0

Web Development

목록 보기
2/2
post-thumbnail

※ 이 포스트는 생활코딩 운영자 이고잉 님의 'Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문' 책을 읽으면서 중요한 내용을 정리해 둔 것입니다.

지난 포스트에서 언급했듯이, 깃이 제공하는 핵심 기능은 크게 "버전 관리, 백업, 협업"으로 나눌 수 있다. 지난 포스트에서는 버전 관리와 백업의 핵심 명령어들을 다뤄 보았다면, 이번에는 '협업'과 관련된 기능들을 정리해 보겠다.



📁 깃허브로 협업하기

☞ 여러 컴퓨터에서 원격 저장소 함께 사용하기

git clone '복사한 주소 붙여넣기' '디렉터리명'

  • 깃헙 레포의 주소를 복사해 온다.
  • 디렉터리가 존재하지 않으면 자동으로 디렉터리가 만들어지고 cloning이 일어난다.
  • 원격 저장소를 현재 디렉터리에 복제하려면 디렉터리명에 마침표(.)를 입력하면 된다.

git pull

  • 다른 협업자가 원격 저장소에 새로 올린 커밋을 가져온다.
  • 앞에서 복제 과정을 거쳤으면 master 브랜치는 origin에 이미 연결되어 있다.
  • 하나의 원격 저장소에 둘 이상의 컴퓨터를 연결해서 사용한다면 pull과 push를 습관화하는 것이 좋다. (그래야 어떤 컴퓨터에서 접속하든 항상 최신 소스를 유지할 수 있다.)

☞ 원격 브랜치 정보 가져오기

  • 지역 저장소의 master 브랜치처럼 원격 저장소도 만들 때 기본적으로 master 브랜치가 생성된다.

  • git log에서 HEAD -> master : 이 커밋이 지역 저장소의 최종 커밋이라는 뜻.

  • git log에서 origin/master : 원격 저장소의 최종 커밋이라는 뜻이다.

git fetch - 원격 저장소의 정보를 가져온다.
- git pull은 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합치지만, fetch는 변화 정보만 가져온다.

git checkout FETCH_HEAD

  • fetch해서 가져온 최신 커밋을 살펴보고 싶다면
  • fetch 명령은 origin/master가 아닌 FETCH_HEAD라는 branch로 정보를 가져온다.

git merge FETCH_HEAD

  • master branch에서 수행
  • 이 명령으로 master branch와 FETCH_HEAD에 있던 커밋을 병합한다.
  • 이것 대신 git pull 명령으로 원격 저장소의 소스를 내려받아도 된다.

git merge origin/master

  • fetch한 뒤, 원격 master 브랜치에 있는 커밋을 병합하는 경우

git merge origin/브랜치 이름

  • 다른 브랜치에 있는 커밋을 병합하는 경우

☞ 협업의 기본 알아보기

  • 원격 저장소에 공동 작업자를 추가한다.

  • 각 작업자의 컴퓨터에 지역 저장소를 만든다. 저장소마다 다른 이름이나 메일 주소를 사용하기 위해 git config 명령을 사용할 때, --global 옵션을 빼고 이름과 메일 주소를 지정한다.

  • 원격 저장소에 처음 올라가는 커밋은 앞에서 공부했던 것과 똑같이 하면 된다.

  • 원격 저장소에서 협업할 때 공동 작업자는 자신의 작업을 진행하기 전에 git clone 명령을 사용해서 원격 저장소를 복제(clone)한다.

  • Github에서 협업할 때는 여러 사람이 함께 문서를 수정하고 push해야 하기 때문에 반드시 작업하기 전에 원격 저장소의 최신 커밋을 pull한 다음 자신의 커밋을 push해야 한다. (그렇지 않으면 ![rejected]라는 오류를 만나게 된다.)

☞ 협업에서 브랜치 사용하기

  • 팀원들이 각자 다른 기능을 맡아서 작업하는 경우, 각자의 작업이 master 브랜치에 있는 문서들과 섞이지 않도록 새 브랜치를 만들어서 버전을 관리한다.

  • 각 팀원이 만든 새 브랜치 역시 원격 저장소에 그대로 push할 수 있다.

git checkout -b f

  • 지역 저장소에 브랜치 f를 만들고 f로 checkout한다.
  • -b 옵션을 사용하면 브랜치를 만들고 checkout하는 것을 한꺼번에 할 수 있다.

git push origin f

  • 원격 저장소(origin)에 f 브랜치를 push한다.
  • push한 브랜치는 Github에서 pull request를 남겨 병합할 수 있다.
  • Github에서 협업할 때는 작업 중간중간 pull request를 보내서 master 브랜치에 병합한다. 따라서, 항상 pull부터 한 다음 자신의 작업을 진행하는 습관을 들이는 것이 좋다(들이도록 하자).


협업에 대한 내용은 여기까지. 지난 포스트와 이번 포스트에 있는 명령어들만 잘 알아 두면 깃을 이용해서 Toy Project / Team Project를 큰 무리 없이 진행할 수 있을 것이라 생각한다.

profile
나 허찬

0개의 댓글