지극히 개인적인 공부 노트/깃(Git)

[Git] 깃허브로 협업하기

AS J 2021. 6. 26. 17:59

깃과 깃허브를 통해 문서를 관리하다 보면 기존에 쓰던 개인 노트북이 아닌 다른 개인 컴퓨터 또는 회사 컴퓨터와 같이 다른 컴퓨터를 통해서 원격 저장소를 공유해야 할 상황이 생깁니다. 또한, 다른 협업자들과 함께 프로젝트를 진행하는 경우에도 하나의 원격 저장소를 다 같이 공유하고, 필요할 때 수정해서 다시 올리는 경우가 발생하기도 합니다. 이처럼 원격 저장소를 협업하기 위한 방법은 다음에 나오는 명령어를 쓸 줄 안다면 더 원활하고 편리하게 협업할 수 있습니다.

 

1. 원격 저장소 복제하기

원격 저장소는 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야 합니다. 이를 '복제', '클론(clone)' 또는 '클로닝(cloning)'이라고도 표현하며, 깃 배시에 다음 명령어 입력해서 원격 저장소를 복제할 수 있습니다.

$ git clone 복사한 원격 저장소의 주소 .    # 마지막엔 공백 한 칸 후, 마침표

여기서 복사한 원격 저장소의 주소 뒤에 공백 한 칸, 그리고 마침표(.)까지 작성해서 명령하면 깃 배시에서 현재 있는 디렉터리에 복제됩니다. 마침표(.) 대신에 원하는 디렉터리명을 입력한다면 해당 디렉터리에 복제하고, 만약 없는 디렉터리명이라면 자동으로 디렉터리가 생성되며 복제됩니다.

이후, $ git push, $ git pull 등과 같은 명령어를 통해 원격 저장소에 수정한 내용을 푸시하거나, 원격 저장소의 수정 내용을 다시 지역 저장소에 가져올 수 있습니다.

 

2. 원격 브랜치 정보 가져오기

pull 명령은 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합치는 명령입니다. 하지만 협업하며 프로젝트를 진행하는 경우에는 다른 사람이 수정한 소스를 먼저 훑어보며 파악을 해봐야 하는 상황이 발생할 수도 있습니다. 이런 경우에 사용하는 명령어가 fetch 명령어입니다.

먼저 원격 저장소의 정보를 불러오거나 최신 커밋까지 가져올 디렉터리로 이동한 후, 해당 디렉터리에서 아래와 같이 명령어를 입력하면 됩니다.

$ git fetch

위 명령어를 입력하면 원격 저장소의 최신 커밋 정보를 지역 저장소에서 'FETCH_HEAD'라는 브랜치에 저장합니다. 이 정보는 지역 저장소에 바로 반영되는 것이 아니라, 그저 정보만을 가져와서 임시로 우리가 볼 수 있게 저장해두는 것이라고 생각하면 됩니다. 이 정보를 확인하고 싶다면 아래와 같이 명령어를 입력합니다.

$ git checkout FETCH_HEAD

또는 해당 브랜치로 이동하지 않고, 현재 지역 저장소의 최신 커밋과 페치(fetch)한 커밋의 차이를 비교하려면 아래와 같이 입력해도 됩니다.

$ git diff HEAD origin/master    # 만약 원격 저장소의 브랜치명이 master가 아니라면 master 대신 다른 브랜치명을 입력하면 됩니다.

 

페치 정보를 확인(원격 저장소의 최신 커밋 정보를 확인)한 뒤에, 이 정보를 지역 저장소와 합쳐도 되겠다고 판단했다면 아래와 같이 merge 명령을 통해 병합을 진행하면 됩니다.

$ git merge origin/브랜치명    # 원격 master 브랜치에 있는 커밋이라면 브랜치명 대신 master를 입력하면 됩니다.

단, 디렉터리를 FETCH_HEAD가 아닌 기존 지역 저장소의 브랜치로 이동한 후에 병합을 진행해야 합니다.

 

3. 새로 만든 브랜치 푸시하기

협업을 하다보면 새로운 기능을 구현하기 위해 지역 저장소에 새로운 브랜치를 만드는 경우가 발생합니다. 새로운 브랜치가 만들어진다면 이 브랜치를 다시 원격 저장소에 추가 반영, 푸시해야 하는데, 아래와 같이 진행하면 됩니다.

우선 아래 명령어는 지역 저장소에서 새로운 브랜치를 만들고 동시에 해당 브랜치로 체크아웃하는 명령어입니다.

$ git checkout -b 브랜치명

이후 브랜치 내에서 파일을 생성, 수정, 커밋 등을 진행했다면, 다시 원격 저장소에 푸시해야 합니다. 이 명령은 다음 명령어로 진행할 수 있습니다.

$ git push origin 브랜치명    # 원격 저장소(origin)로 지역 저장소에서 생성한 브랜치를 푸시한다는 의미

 

이렇게 브랜치가 원격 저장소에 푸시됐다면, 깃허브에서 이에 대해 이 브랜치를 푸시한 사용자에게 'pull request'라는 버튼이 생성됩니다. 이 부분까지 요청을 하고, 처리되어야 원격 저장소 브랜치 추가가 완료되는데, 이 부분에 대해선 다음 강의를 통해 참고하는 것이 가장 이해가 쉬울 것이라 판단되어 강의 링크를 올려둡니다.

https://www.youtube.com/watch?v=uvsz2XgRPfM&list=PLuHgQVnccGMBXv1OKe3Hn3Jq6F735-uWm