본문 바로가기
Today I learned

2021 05 31 - git린이의 모험 pull request

by soheemon 2021. 5. 31.

https://www.youtube.com/watch?v=uvsz2XgRPfM&t=82s 

 

svn을 떠난

git린이는

개발을 시작했다...! 

 

그중 한가지 개념이 확실히 잡히지 않았던것이... pull request의 기능이다. 왜 로컬에서 기능적으로 머지가 가능한데.. 왜 리모트 서버에 pull request를 날려야 하는걸까..?

 

pull request(git hub) && merge request (git lab) - 머지 리퀘스트가 좀 더 와닿는다.

 

PR를 날리나요?

내가 작업한 브랜치를 다른 브랜치에 합친다.

pull request를 하는 가장 간단한 이유는 내 작업물을 stable branch에 합치기 전에.. 다른사람들의 조언/검토를 받기위해 올리는것...!

 

예를

들어서

marster branch (검증된 코드만 모여있는 브랜치), exp branch가 있다고 가정하자. 

exp branch에서 대부분의 작업을 진행하고, 이제 master branch로 병합 하려고 한다...!

 

 

pull request 의

2가지 종류

내 branch를 머지해주세용...!

1) 원격 저장소가 접근할 수 있는 직접적인 권한이 있는경우 -> branch를 병합할때 사용한다! 다른사람의 의견을 받고싶을때 사용. 지금 현재 프로젝트에서 사용하고 있는 방식! 

branch를 새로 따서 작업을 다 하면 코드커밋을 통해 pr를 생성한 후, 코드리뷰를 거쳐서 배포관리자가 master branch로 머지한다.

2) 원격저장소가 오픈소스. read만 가능한경우! original repo를 fork 하면 내 원격 저장소를 가진다. original에도 코드를 배포하고 싶으면, original repo에 pr를 날린다.

 

Topic Branch

feature Branch

에서 작업하고, PR 만들어보기.

 

코드를 수정하고 push를 날리면.

내가 만든 branch에 Compare & pull request 버튼이 있당

버튼을 클릭하면

우측의 branch를 좌측의 branch와 합쳐주십시오!

Reviewers : 의견을 줬으면 하는사람!

pull request와

draft pull request

draft pull request -> 병합이 되진 않고 리뷰만 요청한다.

 

원격 저장소에서

merge를 완료후 pull 하면..!

 

위와 같이 branch가 머지된것을 확인 할 수 있다.

약간 원격 저장소에 어떠한 동작을 위임하는 느낌임. 그리고 원격저장소의 그러한 권한은 코드관리자가 가지겠지...!

 

원치않은 충돌을

해결하는법

 

상황가정 

branch1 에서 작업후 branch1 push & merge request & master branch에 머지 성공 했는데,

이후에 branch2에서 작업 후 merge request를 날리는 과정에서 충돌이 발생했다!

 

충돌의 해결방법

git fetch origin

git checkout -b number-to-alphabet-4 origin/number-to-alphabet-4

/* 충돌 사항을 해결한다. */

git merge master

 

a) 더 많은 충돌이 발생하기 전에 문제의 branch로 이동한다.

b) 문제의 branch에 master를 merge 한다.

c) HEAD가 현재 branch의 수정내역임.

d) 직접 손으로 머징 이후.. git add + git commit + push

e) 충돌이 발생하지 않는다 :)

 

!! 이때 직접 PR를 날려서 원격저장소에서 머지를 할 수도 있지만,

master branch로 이동해서 number-to-alphabet-4를 병합하는것도 방법이다. ==> fastforward! 머지 커밋이 생성되지 않는다.

--no--ff :: no fastforward --> 무조건 머지 커밋을 만들어라! (권장)

 

이렇게 머지하면 pull request가 자동으로 닫히게 된다. 와 신기하다.

댓글