라이브러리는 도서관 아닌가요

git - forked repository에서 original repository로 변경사항 적용 본문

git

git - forked repository에서 original repository로 변경사항 적용

veryhi 2021. 12. 4. 10:28

실행 흐름 (주의: 상당히 주관적이고 개인적인 언어로 작성되어 있습니다.)

1. fork한 user가 자신의 로컬 repository에서 변경사항을 만든다.

2. 이후 자신의 forked remote rerpository에 push한다.

3. fork user가 이 내용을 original project에 반영하고 싶다.

4. original repository에 'pull request'를 발생시킨다.

5. 권한을 가진 original repository의 contributor가 승인한다.

6. 반영된다. 끝.

 

 

0. 상황 가정

0-1. origianl project를 fork하여 내 remote repository에 생성한다.

 

0-2. 그 다음 git bash에서 아래의 명령어로 내 로컬에 프로젝트 생성한다.

git init
git remote add origin [forked repository]
git remote add upstream [original repository] // original을 upstream에 등록한다.

or

git clone [forked repository 주소]
git remote add upstream [original repository] // original을 upstream에 등록한다.

 

 

0-3. 위 작업 무사히 잘 되었다면, 아래의 명령어들로 확인

git branch // 내 로컬에서 생성된 브랜치 리스트 확인
git branch -r // remote의 브랜치 리스트 확인
git branch -a // 모든 브랜치 리스트 확인

 

(clone하면 친절하게 내가 준비한 폴더를 즈려밟고 안에 새 폴더를 생성해준다. git bash 계속 쓰려면 경로 이동 필요)

 

0-4. forked를 받아온 내 로컬 repository에 변경사항을 추가한다.

 

 

1. 로컬에 수정한 내용을 remote forked repository에 push한다.

1-1. push 실행

git add *
git commit -m 'some comment'
git push origin main[혹은 master]

 

1-2. 수정된 내용이 정상적으로 반영되었는지 확인한다.

(야수의 심장을 가지고 있다면 생략해도 된다.)

 

 

2. Git Homepage의 pull request 기능을 이용해서 반영 요청

(로컬에서 받을 때도 pull인데, 왜 병합 요청에도 pull request일까? 진행하면서 좀 더 알아보자.)

 

2-1. git의 homepage로 가면 저런 메세지가 있는데, 버튼을 클릭하면 된다.

 

오래 돼서 안 보이면, 아래의 버튼을 클릭해도 된다.

 

2-2. Git에서 병합이 가능한지 자동으로 코드 검사를 해준다. 아래의 Able to merge라는 메세지가 뜨면 O.K.

 

2-3. comment 남기고 Create pull request 클릭

성공적으로 진행되었다면 아래와 같은 화면을 볼 수 있다.

 

 

3. Pull request 요청을 받은 Original Repository에서 병합 진행

( 아래에서부터는 pull request 요청을 받은, 권한을 가진 contributor만 진행이 가능하다. 결국 forked에서 요청을 받은 후 original에서 pull을 하고 병합하기 때문에 pull request라는 이름이...)

 

3-1. 권한을 가진 contributor가 아래의 Pull requests를 누르면 방금전에 forked에서 보낸 요청 리스트를 확인

3-2. 아래의 Merge pull request를누르면 병합이 진행된다. (comment도 남길 수 있다.)

 

3-3. 그러면 완료됐다는 화면으로 전환된다.

 

original contributor는 자신의 로컬 repository에 pull을 실행해서 반영한다.

권한이 없는 forked user라면 유용하지만 original에서 권한을 가지고 있는 contributor라면 굳이?

 

 

 

 

 

+0. 반대로 진행해보자.

+0-1. upstream에서 변경을 하고 original remote repository에 push를 끝냈다.

 

 

+1.  우선 fetch 과정을 통해서 변경 사항을 '가져온다.'

1-1. 아래의 명령어를 입력한다.

git fetch upstream

이때, 로컬 저장소나 원격 저장소(remote repository)에 아무런 일도 일어나지 않으나 당황하지 말 것.

가져오긴 했지만 저장소에 반영하지 않았다.

 

1-2. 먼저 나의 로컬에 저장하도록 하자.

git merge upstream/[브랜치명]

 

1-3. 로컬에 저장이 되었는지 확인한다.

(내 손 끝을 믿는다면 안 해도 된다.)

 

 

+2. 포크된 원격 저장소(forked remote repository)에 반영한다.

2-1. 아래의 명령어 입력

git push origin [브랜치명]

 

2-2. 원격 저장소를 확인한다.

Comments