관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[Git] 중앙 원격저장소 사용할 때 정리 (ex 협업, 오픈소스 기여 등) 본문

Git

[Git] 중앙 원격저장소 사용할 때 정리 (ex 협업, 오픈소스 기여 등)

막무가내막내 2020. 2. 19. 23:48
728x90

 

 

 

 

최근 프로젝트를 fork 후 내 원격 저장소와 로컬에서 작업 후 중앙 원격저장소로 pull request를 하는 작업을 하고 있는데 관련된 것들을 정리해볼려한다..(협업의 기초!!)

제 개인 정리라 생략된게 많을 수도 있습니다... 허허..

 

해당 사이트는 정리가 잘 되있으므로 참고하면 좋다.

https://andamiro25.tistory.com/193

 

[git]깃허브로 협업하기(Forking Workflow방식)

Forking WorkFlow 방식의 협업 - 모든 프로젝트 참여자가 개인 로컬 저장소와 공개된 자신의 원격 저장소(중앙 원격 저장소를 fork한 것), 이 두개의 저장소를 가지고 협업을 진행하는 방식이다. - 모든 코드 기여..

andamiro25.tistory.com

 

들어가기 앞서 저장소에 대한 개념을 살펴본다.

1. 중앙 원격 저장소: 여러 명이 같은 프로젝트를 관리하는데 사용되는 그룹 계정의 중립된 원격 저장소이다. ( 내 레포지토리가 아닌 타인의 레포지토리라고 봐도 될 것 같다. )

2. 자신의 원격 저장소(remote repository): 내 깃허브 레포지토리이다.  

3. 로컬 저장소(local repository): 내 PC에 저장되는 개인 전용 저장소라 보면 된다. (예를들어 내 pc에 clone하는 행위, 내 pc저장공간)

 


 

 

git remote -v => remote 조회, 처음 clone하면 해당 레포만 결과창에 뜰 것이고 origin으로 되있다.

$ git remote -v
origin  https://github.com/깃헙아이디/레포이름.git (fetch)
origin  https://github.com/깃헙아이디/레포이름.git (push)

 

 

git remote add upstream 레포url => 중앙 원격 저장소의 url을 매번 치기는 힘들다. 그러므로 upstream에 등록해주면 origin이 내가 클론한 깃헙레포를 나타내는 것처럼 등록한 레포를 upstream으로 간편하게 사용할 수 있다. ( 중앙원격 저장소의 이름은 보통 upstream이라 짓는다.)

git remote add upstream https://github.com/깃헙아이디/중앙원격저장소레포이름.git 

 

그 후 다시 git remote -v 를 하면 upstream이 추가 된 것을 확인 할 수 있다.

$ git remote -v
origin  https://github.com/깃헙아이디/레포이름.git (fetch)
origin  https://github.com/깃헙아이디/레포이름.git (push)
upstream        git remote add upstream https://github.com/깃헙아이디/중앙원격저장소레포이름.git  (fetch)
upstream        git remote add upstream https://github.com/깃헙아이디/중앙원격저장소레포이름.git  (push)

 


 

 

git fetch remote명 branch명 => remote의 수정 내용을 로컬로 가져오되 로컬의 원래내용과 병합하지 않는다. 수정 내용을 로컬에도 반영하고 싶다면 git merge를 사용하면 된다.

 

git pull remote명 branch명 => 위의 fetch와 똑같으나 fetch와 merge의 통합형이라고 볼 수 있다. 즉 fetch와 다르게 소스가 병합된다.

 

fetch와 pull의 차이점은 https://backlog.com/git-tutorial/kr/stepup/stepup3_1.html 에서 참고하도록 하자.

 


 

 

[예시]

중앙원격 저장소를 fork 후 내 원격저장소로 가져와서 clone후 내 로컬 저장소에서 ex-branch라는 이름의 브랜치에서 작업한 마쳤다고하자. (브랜치 생성 또는 checkout 생략, upstream 설정까지 완료한 상태)

 

충돌을 피하기위해 

git pull upstream 중앙원격저장소의branch명

을 먼저 해준다.

 

 

 

그 후 차례대로 다음 3개를 실행함으로써 로컬 저장소에서 작업했던 것들을 내 원격 저장소에 push 한다.

 

1. git add 파일/디렉토리명

2. git commit -m "커밋메세지"

3. git push origin ex-branch  => 생성된 브랜치에서 작업안하고 master에서 작업중이라면 git push origin master

 

 

그 후 내 원격 저장소로(나의 레포) 가서 내가 작업한 branch를 선택해주고 new pull request를 누른다. (개인 보안을 위해 부분캡처했습니다.)

 

그럼 예시로 다음과 같이 뜰 것이고 메시지와함께 pull request를 날려주면 된다.

 

 


내 pull request가 Merging is blocked되거나 close가 안되있는 경우는 내 로컬에서 작업 후 원격저장소에 push하고 다시 pull request를 날렸을 때 이미 올라가 있는 pull request에 내용이 추가되어 pull request가 되었다. ( 즉 pull request가 2개가 생긴게 아니라 기존의 pull request 밑에 새로 바뀐 내역들이 추가된다.)  

 

 


추후 내용이 추가될 수도 있습니다. (현재 브랜치 생성, checkout하는 방법은 생략한 상태)

 

댓글과 공감은 큰 힘이됩니다. 감사합니다!!

728x90
Comments