Github를 이용한 협업 프로세스

Young Joy·2025년 8월 4일

Git_Github

목록 보기
15/19

29.Github를 이용한 협업 프로세스

GitHub로 협업을 진행하다 보면 규모에 따라 다르겠지만 참여하는 개발자가 많은 프로젝트의

경우 무분별한 Branch 생성으로 협무의 효율을 떨어뜨릴 수 있습니다.

Untitled

그 외 수많은 Git branch 전략이 있습니다.

그래서, 효율적인 버전 관리를 위해 만들어진 다양한 GitHub-Flow 전략 중 One of the Git Flow

전략을 우리가 진행할 프로젝트에 적용시켜 볼 수 있으면 좋겠다는 생각을 했습니다.

Untitled

출처:One of the Git Flow © Sammy Baek

프로젝트 Git & GitHub 활용 도식화

Untitled

GItHub_project.pdf

행 순서↓

  • 팀장이 GitHub에 생성한 프로젝트 원격 저장소(Remote Repositoty)를 본인의 GitHub에
    Fork해 오기

  • Fork해온 프로젝트를 본인의 로컬 저장소(Local Repository)로 Clone해 오기

    #로컬 저장소 = 본인 pc

  • 프로젝트를 Forked해온 원격 저장소(Remote Repositoty) https 주소를 로컬 저장소(Local Repository)에 등록하기

    #clone 받아오면 remote에 clone 받아온 원격 저장소의 https 주소와 별칭(origin)이 자동으로 생성됨, 그렇기 때문에 프로젝트로 원격 저장소의 주소는 직접 입력해 줘야함

  • 로컬 저장소(Local Repository)에서 작업하기 전 새로운 Branch를 생성해서 작업하기

    #main 저장소에는 pull 이용해 항상 최신의 정보가 유지되도록 만들고 생성한 branch에서 
      작업을 진행해야 로컬 환경에서 merge를 통해 충돌을 사전에 처리할 수 있고 정상적으로
      작동하는지 확인 가능함 
  • 작업이 완료되었다면 git fetch를 활용해 원본(Upstream) 프로젝트에 변경 이력이 있는 확인해보기
    #git fetch 후 받아 온 정보를 git diff ..upstream/main 코드를 이용해 상세 확인

  • 원격 저장소의 변경 이력이 없거나 내 작업물과의 충돌이 발생하지 않을것 같다면, 우선 main
    브랜치로 이동 후 git pull upstream을 이용해 최신 버전으로 만들기

  • main브랜치에서 작업을 진행한 브랜치 merge 진행, 이 과정에서 충돌이 일어난 경우
    충돌 해결 후 merge 계속하기

  • merge가 완료되면 본인의 원격 저장소로 git push

  • GitHub 사이트에서 본인의 원격 저장소(Forked Remote Repository) 이동 후 Push된 이력을
    원본 프로젝트가 있는 저장소에 pull request 요청 보내기

    #팀원을 프로젝트 원격 저장소에 초대했다면 pull request 요청 시 승인 과정없이 자동으로 merge 됨

Untitled


  • 5-1 Origin Repository에서 Fork하기 협업을 위해 가장 먼저 되어야할 것이 원본 원격 저장소를 Fork해 오는 것이다.

    Fork :
    GitHub에 공개된 사용자들의 원격 저장소(Remote Repository)를 자신의 원격 저장소(Remote Repository)로 모든 정보(코드, Commit 내용, Branch 등)를 복제해 오는것

    Fork 기능 이용 시 원본 원격 저장소와 복제된 원격 저장소는 연결되어 있어 원본 저장소에 변화가 있을 시 복제된 원격 저장소에 반영 할 수 있다.
    원본 프로젝트가 있는 원격 원격 저장소를 자신의 원격 저장소로 복사해서 작업을 하면 2가지 장점을 생각해 볼 수 있다. ( 2가지의 장점의 큰 맥락은 같다. )
    • 내 원격 저장소에 있는 프로젝트에 어떠한 작업을 진행해도 원본 프로젝트에 영향을 미치지 않음

    • 프로젝트의 무분별한 수정을 막을 수 있음

      프로젝트가 진행될 원본 프로젝트가 있는 GitHub의 원격 저장소로 이동하여 오른쪽 상단에 있는 Fork 버튼을 클릭해 보겠습니다.

      Untitled

      Fork 버튼을 클릭하면 아래 화면이 나옵니다.

    1. 새로 생성될 원격 저장소 이름, 기본값은 Fork한 원격 저장소의 이름이 그대로 사용됨

    2. 원격 저장소에 대한 설명

    3. 체크된 상태에서 Create fork를 누르면 main Branch만 남기고 기존에 있던 모든 Branch가 제거된 상태로 Copy됨, 이를 원하지 않으면 체크를 해제 후 Create fork를 선택

      Untitled


  • 5-2 Fork한 프로젝트 Local Reposito로 Clone하기

    Clone

    Clone :
    특정 원격 저장소(Remote Repository)를 로컬 환경으로 복제하여 새로운 로컬 저장소(Local Repository)를 만들어 줌
    Clone을 통해 생성한 로컹 저장소는 origin이라는 별칭으로 붙음

    그럼 아래 명령어를 이용해 Fork한 프로젝트를 본인의 작업 환경에 구성해 놓은 로컬 저장소에 Clone 해봅니다. Untitled VS Code에서 BASH 터미널을 이용 중인 경우라면 왼쪽 상단에 Clone한 프로젝트의 폴더가 생긴걸 볼 수 있습니다.

  • 5-3 Local Repository에 원본(Upstream) Repository 등록하기

    Remote

    터미널에서 Clone한 폴더로 이동 후 아래 명령어를 입력해 보시면 관리되고 있는 원격 저장소의 정보를 확인할 수 있습니다. Untitled Clone 기능을 통해 로컬에 저장된 저장소의 별칭은 기본적으로 Origin으로 설정됩니다. 💡 Clone 기능을 통해 로컬에 저장된 저장소의 별칭은 기본적으로 Origin으로 설정됩니다. 여기에 추가로 작업해줘야 하는 부분이 있습니다. 원본 프로젝트가 있는 원격 저장소를 등록해 주는 과정입니다. 이걸 통해 원본 프로젝트에 변화가 생겼을때 Git 명령어를 통해 확인해 볼 수 있습니다. - 아래 명령어를 이용해 Fork한 원본 로컬 저장소를 관리 목록에 추가 (upstream은 별칭으로 원하시는걸로 설정해도 됩니다) ![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fbddd2f3-74b5-44f5-859c-95d78a26a7dd/Untitled.png) 위 과정을 거치면 fork한 원격 저장소(origin)와 원본(upstream) 원격 저장소를 관리 목록에서 확인할 수 있습니다. ![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2393da3a-aeff-4c3a-b97c-fd64c8550e83/Untitled.png)

  • 5-4 Branch 생성하기 로컬 환경에서 새로운 기능을 만들때는 반드시 Branch를 생성 후 이용합니다. Untitled Branch를 생성하셨다면 해당 Branch로 이동 후 작업을 진행해주시면 됩니다. 아래 명령어를 통해 원하는 브랜치로 전환할 수 있습니다. Untitled Branch를 생성해서 작업을 하면 몇 가지 장점이 있습니다.
    • 원본 코드를 손상시키지 않고 다양한 시도가 가능함
    • 새로운 기능 개발 시 그 이력을 별도로 남길 수 있음

  • 5-5 Commit하고 Forked Remote Repository에 Push하기

    Commit & Push

    Branch에서 작업한 내용을 commit하고 원격 저장소로 push할때는 fork한 원격 저장소의 Branch로 Push를 진행해야 합니다. 우리가 push 해야할 원격 저장소는 origin이고 위에서 브랜치를 develop으로 만들었다면 아래와 같이 코드를 입력해야 합니다. 원격 저장소에 Branch가 생성되어 있지 않아도 로컬 저장소의 Branch가 원격 저장소에 자동 생성됩니다. Untitled 우선 변경 이력을 forked remote repository에 push해 줍니다. 기능을 만들기 위해 작성한 이력을 GitHub에 기록하고 관리하기 위해서 필요한 작업입니다.

  • 5-6 Fetch를 활용해 Forked Remote Repository에 변경 사항 확인하기

    fetch

    작성한 코드를 Pull Request 하기전에 가장 중요한 것은 원본 원격 저장소에 변경된 이력이 있는지 확인하는 것이다. 원본 원격 저장소에 변경된 이력과 내가 작성한 코드의 충돌이 발생하지 않는다면 다행이지만 충돌이 발생할 경우 이를 해결하고 진행해야 한다. 변경된 이력이 별로 없다면 쉽게 해결할 수 있으나 많은 변경 이력이 있다면 쉽지 않기 때문에 Pull Request 하기전 아래 코드를 통해 원본 원격 저장소의 변경 이력을 꼭 확인한다. ㅣ 아래 코드를 입력헤 원본 원격 저장소의 변경 이력을 확인해 본다. Untitled

  • 5-7 git fetch를 통해 Conflict(충돌) 요인 확인 후 수정 / git pull을 이용해 통해 최신 상태 유지 원본 프로젝트 변경 이력도 확인안하고 pull request해서 지금 팀장님 개빡쳤어… 사라야 너 지옥행이래… Untitled

    변경 이력과 Conflict(충돌) 요소 확인하

    git fetch를 통해 Conflict가 발생할 요인이 있다면 이를 수정 후 pull을 실행하고 commit → push
    # 프로젝트 원본 저장소의 변경 이력 가져와 확인해 보기
    git fetch upstream
    git diff ..oring/main
    
    # 
    

    변경 이력이 있고 Conflict(충돌) 요소가 없는 경우

    fetch로 불러온 최신 데이터를 기존 저장소에 pull 실행 후 commit → push 원격 저장소(origin)로 바로 push

  • 5-8 Pull Request 하기

    Pull Request

    pull request는 내가 수정한 Commit들을 원본(upstream) repository에 반영(pull)해줄 것을 요청(Request)하는 작업이다. 로컬 저장소에서 작업물에 충돌이 없었거나 해결한 상태로 원격(origin) 저장소에 push된 상태라면 원본(upstream) 저장소에 수정 내역을 반영할 수 있다. 그럼, 원격(origin) 저장소의 Github UI로 가서 push 했던 브랜치로 이동해 보자 아래와 같은 메시지를 확인 할 수 있다. develop had recent pushes less than a minute ago [Compare & pull request] 그럼 [Compare & pull request] 버튼을 클릭한다. 그러면 pull request 양식이 나온다. 이때, pull request 양식에서 자동으로 코드 충돌 검사를 수행해준다. 이상이 발생했다면 충돌 해결 작업부터 다시 수행하면 되고, 이상이 없다면 ‘able to merge’라는 메시지가 보일 것이다. 이어서 CONTRIBUTING.md
    파일의 지침을 상기하면서 양식 내용을 채워 넣고 Create pull request 버튼을 클릭한다. 그러면 Pull Request는 원본 Repository의 Pull requests 내역에 추가된다. Pull requests  요청은 원본(upstream) 원격 저장소에 수정 권한을 가진 팀장 의해 검토될 것이며 원본 소스와 병합(merge)되는 것이 타당한 것으로 판단되는 경우 원본 소스에 병합될 것이다. 호우~~~!!! 우리 수강생 분들 대단하다!!! 장하다. 멋지다~!~!!!! Untitled

0개의 댓글