본문 바로가기

2022년_동국대학교/OSSP 팀플 일지

[OSSP]깃 협업하기_upstream

728x90

팀프로젝트에 앞서서 협업을 위한 기본적인 작업을 들어갔다.

 

오픈 소스에 기여하기(contribute) 위해서는 오픈 소스 프로젝트의 코드를 수정해야한다. 그러나 내가 직접 오픈 소스 코드에 수정을 할 수 없다.

그래서 내 로컬에 원격저장소의 오픈 소스 프로젝트를 복사해서 작업을 하고 오픈소스 프로젝트의 소유자에게 검사를 받아야 한다.(이번 팀플에서는 조교님이 모두를 소유자로 권한부여해서 상관은 없지만, 그래도 깃 협업을 배우기 위해!)

 

그리고 검사를 다 받으면 오픈소스 프로젝트의 소유자가 해당 코드를 자신의 오픈소스 코드에 적용시킨다.

요게 우리학교 융소 오픈소스프로젝트 레포들이 있는 곳이다.

 

upstream이란???

사전적인 의미를 파악해보면, upstream이 상류, downstream이 하류
물이 상류에서 하류로 흐르듯이 pull 하는 주최가 downstream 당하는 쪽이 upstream 이다
->내 레포에서 다른 레포를 풀 해서 작업하고 있다면 다른 레포가 업스트림이 된다는 말!!

otherRepository(upstream) -> (git pull) myRepository(downstream)


순서
1. 오픈소스 프로젝트 가져오기
2. 로컬 저장소 세팅
3. 메인 저장소와 내 저장소 싱크하기

1.  오픈소스 프로젝트 가져오기

오픈소스 프로젝트가 있는 메인 저장소를 내 저장소로 fork 해야한다.

fork : CSID-DGU에 있는 우리 팀의 레포지토리를 나에게도 끌어와서 원격저장소를 만들어야 한다. (오픈 소스 프로젝트를 내 로컬에 복사하는 작업)

메인 저장소에서 모든 것을 가져와 내 원격 저장소에 저장되고 내가 작업할 수 있는 환경이 된다.

 

2. 로컬 저장소 세팅하기

로컬 저장소를 세팅하기 위한 과정은 3단계로 나눠놨다.

  • 작업 공간 만들기 
$ git clone [fork한-내-원격-저장소-url.git]
  • origin 설정

내가 fork한 나의 저장소와 연결시켜 Pull Request를 보낼 준비를 한다.

$ git remote add origin [fork한-내-원격-저장소-url.git]
  • upstream 설정
$ git remote add upstream [메인-저장소-url.git]

 

 

3. 싱크하기 _ fork한 자신의 저장소에 원래 저장소를 remote 로 등록하기

$ git remote -v

만 치면 아직 원격 저장소 설정이 되지 않은 상태이기 때문에 아래와 같이 나올 것이다.

origin [fork한-내-원격-저장소-url.git] (fetch)
origin [fork한-내-원격-저장소-url.git] (push)

=>원격 저장소에 원본 저장소를 설정해야, 원본 저장소에서 최신 수정 내역들을 내 작업에 반영할 수 있고, 다른 사람들과의 협업이 가능해진다.

$ git remote add upstream [메인-저장소-url.git]

위 명령어의 의미는 이름을 upstream으로 하는 원격 저장소를 추가한다는 것. 이제 추가한 upstream 이라는 원격 저장소에서 최신 커밋 내역을 가져오면 된다.

 

3. 싱크하기 _ 원격 저장소에서 최신 커밋 내역 가져오기

저장소가 잘 설정되었는지 먼저 확인(git remote -v)해보면 origin 뿐만 아니라 upstream 이라는 이름으로 결과가 나온다.

fork 된 Git 프로젝트를 clone 한 경우, 해당 프로젝트의 upstream 저장소에 대해 직접 push 할 수 있는 권한은 없을지라도 push 및 fetch 수행을 위한 설정이 필요하다.

 

 

Git upstream 연동 및 PR 방법

Git에 사본과 원본을 연결하는 방법1) cd 사본 디렉토리 진입2) git clone (해당 Repository의 사본 주소) 위 명령을 통해서 사본의 내용을 내 컴퓨터에 저장한다.3) cd 사본 Repopsitory 폴더명4) git remote -v 를

velog.io

보다 정확한 정보는 이 글 참고!!