GIT

[Git] GIT 협업 방법! - (Forking Workflow)

GaGah 2020. 6. 12. 16:02

들어가기

협업 프로젝트를 하며, 졸업작품을 하며, 개인 repository를 관리하며..

Git을 사용했고 하고 있지만! 정확한 이해보다 하면서 찾아보고 느낌?상으로 했던 경험이 많은 것 같다.

 

 

목차

1. Forking Workflow 란?

2. How it works 

3. Other situations

2. Forking Workflow를 사용하는 이유? 장점?

 

1. Forking Workflow 란?

  • 개인 원격 저장소(중앙 Repository Fork한 것), 개인 로컬 저장소 2개의 Git 저장소를 가지고 프로젝트 진행
  • 프로젝트 진행자 모두가 중앙 Repository에 Push 하지 않고, 개인의 원격 저장소에 Push 후, Pull Request 를 통해 중앙 Repository에 Merge하는 작업이다. 

 

2. How it works

   2-1. 중앙 Repository를 만든다. ( Organizations 으로 만들었다. )

 

 

2-2.  중앙 Repository를 Fork 한다. 

 

2-3. Fork한 개인의 Repository 에서 local 저장소로 clone한다. 

 

{ } 한 곳에 개인 repo의 url을 넣으면 된다! (물론 중괄호는 쓰면 안된다!)

 

 

 

2-4. Add remote (중앙, 개인 Repository를 연결한다)

 

개인 Repostitory remote

 

중앙 원격 저장소 remote

 

※ 보통, 중앙Repository는 upstream, 개인 Repository는 origin이라고 명명한다.

 

 

2-5. 로컬 저장소에서 작업한다.

  - 기능별 branch를 파는 경우도 있고, master에 작업하는 경우도 있고.. 정답은 없겠지만, branch를 파서 작업하는 걸 추천한다..!

 

 

2-6. 작업한 내용들을 Commit 해준다.

$ git add .

    > 변경된 모든 파일을 추적(stage)한다. 추적되는 파일은 commit에 포함된다. 

 

$ git commit -m "message"

    > 커밋을 추가한다.

 

 

2-7. 개인의 Repository에 Push한다. 

$ git push origin [master or 본인이 작업하는 branch]

 

2-8. 중앙 Repository에 Pull Request 한다. 

 

 

2-9. 프로젝트 관리자가 오류가 있는지 보고 Merge를 한다.

 

 

3. Other situations

3-1. 중앙 Repo에 있는 Merge된 코드를 받고 싶다면??

$ git pull [upstream] [master]

   > [upstream] 본인이 명명한 중앙 Repo의 이름 넣기 

   > [master] pull 받고 싶은 branch 이름 적기

 

 

 

4. Forking Workflow를 사용하는 이유? 장점?

 1) 장점

  • 모든 사람이 중앙 Repository로 푸시 할 필요 X
  • 개발자는 자신의 Repository로 푸시하며 프로젝트 관리자만 공식 Repository로 Push 할 수 있다.
  • 이를 통해 관리자는 쓰기 권한을 부여하지 않고도 개발자의 커밋을 수락할 수 있다.

 2) 이유

  • 하나의 Repository에 권한을 주고 자신의 branch를 파서 작업한 후 Master에 Merge 하는 작업을 했었다.
    • 새로운 방식으로 진행해보고 싶었다. 
  • 작업을 진행하고 있는 도중, (개발에 참여하고 있지 않은) 개발자가 프로젝트에 투입이 된다면, 다른 사람들이 하고 있던 작업들을 다 Merge가 된 후 받아야 하는 불편함이 있을 수 있다.
    • 오픈소스 프로젝트에서 많이 사용

 

LIST

'GIT' 카테고리의 다른 글

[GIT] git 캐시 삭제  (0) 2021.01.13
[Git] GIT Repository 삭제하기  (0) 2020.12.20
[Git] warning : LF will be replaced by CRLF  (0) 2020.05.13