git pull에서 나는 충돌은 생각보다 쉽게 해결 가능했습니다. conflict난 파일을 즉시 확인할 수 있었으니까요. 그러나 pull request에서 나는 충돌은 꽤 막막합니다. 대체적으로 아래와 같은 상황입니다.

  • master 브랜치에서 feature_xfeature_y 브랜치를 동시에 생성
  • feature_x는 README.md를 수정하여 master에 merge가 완료됨
  • feature_y가 README.md를 수정하여 master에 pull request하는 순간 conflict 발생

동일한 저장소에서 브랜치 간 conflict

생각보다 간단합니다. Pull request 타겟 브랜치의 변경 사항을, Pull request source 브랜치로 가져오면 됩니다. 예를 들어, feature_y 브랜치에서 master 브랜치에 대해 pull request하는 과정에서 conflict가 났다면, feature_y 브랜치에서 master 브랜치의 변경 사항을 가져오는 것입니다.

> git checkout feature_y
> git pull origin master

그럼 현재 브랜치에서 conflict가 발생되고, 해당 충돌을 해결한 후 다시 commit - push하면 pull request에서 충돌이 발생하지 않습니다.

Fork된 저장소와 upstream 브랜치 간 conflict

이 상황은 해결법을 떠올리기 힘듭니다. 사실 위와 동일하게 해결하는데, 이번에는 git의 remote라는 개념을 활용합니다. 예를 들어, origin의 feature_y 브랜치에서 upstream의 master 브랜치에 대해 pull request하는 과정에서 conflict가 났다면, upstream/master 브랜치의 변경 사항을 feature_y 브랜치로 가져오면 됩니다.

> git checkout feature_y
> git remote add upstream [https://upstream_url.git]
> git pull upstream master

위처럼 현재 브랜치에서 conflict가 발생되고, 위처럼 충돌을 해결하고 나면 pull request에선 충돌이 발생하지 않습니다.

'Git 레거시 글' 카테고리의 다른 글

[Git] Fork와 Pull request  (0) 2018.08.12
[Git] Cherry-pick  (0) 2018.05.30
[Git] 커밋 히스토리 수정하기  (0) 2018.05.29
[Git] 커밋 되돌리기  (0) 2018.05.28
[Git] 다시 커밋하기  (0) 2018.05.27

+ Recent posts