본문 바로가기
~2024.10

[Git/GitHub] Git과 GitHub를 실무(협업)에서 사용하는 방법 정리글

by HJfan 2024. 4. 20.

🙏 포스팅을 읽기 전 참고해 주세요 🙏

해당 블로그는 신입 개발자가 공부한 내용을 기록 용도로 운영하는 공간입니다.

최대한 오피셜한 내용을 작성하려고 노력하고 있지만, 일부 부정확한 정보가 포함되어 있을 수 있습니다.

해당 내용은 댓글이나 메일을 남겨주시면 즉시 확인 후 조치를 취하도록 하겠습니다. 감사합니다.


1️⃣ Git과 GitHub의 차이

Git과 관련된 영상이나 자료 대부분은 Git과 GitHub의 차이를 설명하는 것으로 시작할 것이다.

Git은 Linux의 창시자인 리눅스 토발즈가 개발한 분산 버전 관리 시스템으로, 코드의 버전을

관리하기 위해 로컬에서 사용하는 도구이다.

GitHub는 현재 MS에서 운영하고 있고, Git을 기반으로 하는 클라우드 기반 호스팅 서비스이다.

즉, 버전 관리나 협업을 용이하게 지원하는 웹 기반의 서비스 플랫폼이다.

❗ Git 협업을 위해 반드시 GitHub를 사용해야 하는 것은 아니다.  
   실제로 NAS 서버를 원격 저장소로 설정하여 Git 협업을 진행하는 등의 방식도 사용된다.

 

2️⃣ 협업에서 Git과 GitHub을 사용하는 방법

Git과 GitHub를 사용하여 팀장과 여러 팀원들이 협업을 하는 방법에 대하여 알아보겠다.

우선 팀장은 자신의 로컬에서 프로젝트의 기본적인 세팅을 진행한다.

그리고 그 코드를 GitHub에 Push하여 팀원들과 공유한다. (본문에 사용된 깃 명령어들은 하단에 정리)

 

팀원들은 팀장이 원격 저장소에 올려둔 코드를 자신의 GitHub 저장소로 Fork 한다.

(해당 방식은 참조한 유튜브 채널 관리자가 진행한 방식이며, 성향에 따라 해당 과정은 생략 가능)

그리고 원격 저장소의 코드를 자신의 로컬에 Clone으로 복사한 후 작업을 수행하도록 한다.

 

지금까지는 최초 한 번만 진행하는 작업이고, 아래부터는 상황에 따라 반복적으로 진행해야 한다.

로컬에서 어느정도 작업을 수행했다면, add -> commit -> push의 순서로 원격 저장소에 수행한 코드를

업로드 후 팀장 혹은 팀장을 포함한 팀원들에게 PR(Pull Request)를 통해 반영 여부를 검토 받는다.

이때, Able to Merge. 가 출력된다면 PR이 가능한 상태임을 의미하니까 그대로 진행하면 된다.

하지만 만약 Conflict가 발생한다면, Merge가 불가능한 상황을 의미하는 것으로 대부분 현재 자신의

로컬 코드와 공동으로 작업하는 코드가 있는 원격 저장소의 최신 코드가 불일치하기 때문이기에 최신 코드를

Pull로 다운 후 자신의 로컬에서 Merge 과정을 거치고, 다시 PR을 요청하면 해결될 것이다.

❗ Branch를 하나만 사용하고 있다면 PR이 불가능하다고 생각되는데, 이 부분은 찾아보는 중이다.

❗ [2024.04.21 추가] PR은 GitHub라는 플랫폼이 제공하는 기능으로, 서로 다른 브랜치로의 Merge를 요청하는 과정이다.
   이 과정에서 코드 리뷰 등이 이루어진다고 한다. 당연히 Branch가 하나고 GitHub를 사용하지 않는 프로젝트에서는
   PR 전략을 사용할 수 없다. 참조한 유튜브 채널 관리자의 경우 GitHub로 협업을 진행하였기에 PR위주의 설명이 진행되었을 뿐이다.

 

여기까지가 팀장과 한 명의 팀원이 Git과 GitHub를 통해 협업하는 과정이다.

마지막으로 다수의 팀원과 협업을 하기 위해 주의해야 하는 점을 알아보도록 하자.

팀원 1이 앞서 설명한 과정을 진행 후 PR을 전송했다고 가정하자. 팀장이 이를 수락하여 원격 저장소에

적용되었다면, 다른 팀원들 예를 들어 팀원2와 팀원3은 해당 코드를 새롭게 Pull을 받아 최신화한 후

자신의 코드를 Push 후 PR을 요청해야 한다. 그냥 누가 PR을 요청하여 새롭게 반영되었다면 다른 사람들도

그 코드로 최신화 한 후 새로운 PR을 요청해야 한다는 의미이다.

 

3️⃣ 언급된 Git 명령어 정리

ㆍFork : 다른 사용자의 GitHub 저장소를 자신의 계정으로 복사(원본 저장소에 영향X)

ㆍClone : 원격 저장소의 코드를 자신의 로컬로 복사

ㆍadd : 작업 디렉토리에서 변경된 파일들을 다음 커밋에 포함시키기 위해 준비하는 단계

ㆍcommit : 추가된 변경사항들을 로컬에 저장, 설명하는 메세지 추가 가능

ㆍpush : commit된 변경 사항들을 원격 저장소에 업로드

ㆍMerge : 두 개의 분기된 브랜치를 하나로 병합하는 과정(그냥 병합이라는 키워드로 알아두면 됨)

ㆍConflict : 병합하려고 할 때, 같은 파일의 같은 부분이 다르게 수정되어 병합이 불가능한 상황(충돌로 기억)

 


📝 Reference

👉 https://youtu.be/IT41djAKUgg

👉 https://inf.run/WfKH