DevOps/Github

[Github] Github로 협업하기

IT수정 2024. 10. 11. 15:26

원격 저장소 복제하기

원격 저장소를 기존에 연결되지 않은 지역 저장소에서 사용하려면 원격 저장소로 담긴 내용을 지역 저장소로 가져와야 한다. 이것을 복제, 또는 클론(clone), 클로닝(cloning)이라고 한다.

 

원격 저장소를 git_home과 git_office라는 지역 저장소로 복제하기

원격 저장소에서 [Code]를 클릭한 후 HTTPS 주소를 복사한다.

 

git_home 디렉터리를 만들고 다음 명령어를 입력해 복제한다.

 

같은 방법으로 git_office 지역 저장소도 진행한다.

 

VS Code에서 양쪽에 디렉터리를 실행하고 진행한다.

 

git init // 저장소 초기화
echo "내용" > 파일이름.txt // 새파일 추가
git add 파일이름.txt // 스테이징
git commit -m "메시지" // 커밋

// clone으로 원격 저장소 연결 안될시
remote add origin "리포지토리 HTTPS 주소"

git pull origin master // 원격 저장소 파일 가져오기

git push // 지역 저장소 파일을 원격 저장소에 보내기

// fatal: refusing to merge unrelated histories
// 두 개의 서로 다른 Git 역사(이력)를 병합하려고 할 때 발생하는 fatal
git pull origin master --allow-unrelated-histories // 서로 다른 이력 간의 병합을 허용
// 상위 명령어 사용 후 git push 진행

 

깃허브에서 확인해 보면 다른 지역 저장소에서 push 한 파일이 추가된 것을 볼 수 있다.

 

커밋과 브랜치 이해하기

원격 main(master) 브랜치

원격 저장소에서 기본적으로 만들어지는 브랜치이다. 지역 저장소의 main 브랜치와 구별할 수 있도록 '원격 main 브랜치'라고 부른다.

 

git_home 디렉터리에서 커밋 확인하기

 

HEAD -> master : 지역 저장소의 최종 커밋

origin/master : 원격 저장소의 최종 커밋

 

새로운 파일을 생성한 뒤 커밋 로그를 확인해보자.

 

원격 저장소로 푸시 & 커밋 로그를 확인해 보자.

 

나의 로그는 일반적인 상황에서 뜨는 로그는 아니다. 로컬 브랜치가 원격 브랜치보다 뒤처져 있는 경우(git pull을 하지 않은 상태에서 푸시하려고 할 때) Git은 로컬에서 원격 변경 사항을 통합하기 위해 병합을 요구할 수도 있다. 이때 병합 커밋이 생성되면서 위와 같은 메시지가 발생한다.

 

협업과 브랜치

브랜치는 main 브랜치와 구분 짓는 작업을 위해 코드를 분리하는 것이다.

협업을 할 때 맡은 업무에 따라 서로 다른 브랜치를 만들어서 작업한 후 나중에 병합시킨다.

 

협업 과정

  • 1단계 : 협업을 위한 저장소 만들기
  • 2단계 : 팀원 추가
  • 3단계 : 브랜치별로 커밋하고 푸시
  • 4단계 : 풀리퀘스트 요청
  • 5단계 : 코드 리뷰 & 브랜치 병합

 

협업을 위한 저장소 만들기

새로운 리포지토리를 생성한다. 이때, [Add a README file]에 체크해 준다.

 

[Settings]을 클릭하고 [collaborators] - [Add People]을 선택한다.

 

공동 작업자의 이메일을 추가하고, 초대받은 사용자는 초대를 수락한다.

 

[Projects]를 클릭하고 [New Project]를 생성한다.

 

View를 Board로 변경해 주고 Todo 열에 있는 [Add item]을 클릭한다.

 

할 일을 적고 [Enter]를 눌러 추가해준다.

 

할 일 항목에서 [...] 클릭 후 [Convert to issue]를 선택한다.

 

이슈를 할당할 저장소를 선택한다.

 

할 일 항목에서 [...] 클릭 후 [Open in new tab]을 선택한다. 이슈 화면의 'Assigness' 항목에서 담당자를 선택한다.

 

브랜치 만들기 - 팀원 역할

깃허브 저장소 접속 후 [Projects] 클릭 후 팀장이 정리해 놓은 프로젝트를 선택한다.

'Todo' 열에 할당된 작업자들이 함께 표시된다.

자신에게 할당된 작업 항목의 [...] 클릭 후 [Open new tab]을 선택한다.

 

이슈 항목에서 [Create a branch]를 클릭한다.

 

브랜치 이름을 지정하고 [Create branch]를 클릭한다. 팝업 창은 그냥 닫아준다.

 

지역 저장소에서 작업하고 푸시하기

지역 저장소를 만들 위치로 이동한 후 원격 저장소를 복제한다.

 

plan 브랜치를 추가한다. plan 브랜치가 만들어지면 원격 저장소의 plan 브랜치와 연결된다. (브랜치 트래킹)

 

브랜치에서 작업 후 원격 저장소로 푸시한다.

 

원격 저장소의 plan 브랜치를 확인해 보면 푸시된 작업을 볼 수 있다.

 

풀 리퀘스트 요청하기

풀리퀘스트(PR} : 자신이 푸시한 작업을 main 브랜치로 병합해 달라고 요청하는 것

 

커밋을 푸시한 브랜치를 선택하고 [Compare & pull request]를 클릭한다.

 

풀 리퀘스트 제목과 내용 입력 후 [Create pull request]를 클릭한다.

필요하다면 이미지나 파일도 첨부 가능하다.

Reviewers 항목에서 리뷰할 사람을 선택가능하다.

 

풀 리퀘스트 검토하고 브랜치 병합하기

제대로 작업했다면 main 브랜치로 병합하고, 수정하거나 추가할 부분이 있다면 내용을 기록하고 재작 업하도록 한다.

 

깃허브 저장소에서 [Pull requests]를 클릭하고 Open 상태인 PR을 선택한다.

 

병합해도 되겠다면 [Merge pull request]를 클릭한다.

 

커밋 메시지를 작성하고 [Confirm merge]를 클릭하면 병합이 완료된다.

브랜치가 더 이상 필요 없다면 삭제 가능하며, 정상적으로 main 브랜치에 병합되었는지 확인한다.