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