오래된 base에서 열린 PR을 확인할 때는 최신 master와 PR branch의 merge-base를 기준으로 diff를 보거나, PR ref를 로컬 branch로 fetch해서 직접 검토할 수 있습니다.
원문은 PR branch를 최신 master로 맞추는 merge와 rebase, GitHub PR을 로컬에 가져오는 fetch 명령, Files changed 기준 diff 확인을 정리한 Git 메모입니다.
핵심 정리
Pull request를 로컬에서 확인할 때는 base branch와 head branch의 관계를 먼저 봐야 합니다. PR이 오래된 master에서 시작되었다면 단순 diff가 현재 master 기준과 다르게 보일 수 있으므로 merge-base를 기준으로 비교하면 실제 변경 범위를 더 명확히 볼 수 있습니다. GitHub에서는 pull request head ref를 fetch해 로컬 branch로 만들 수 있고, 원격 branch 이름이 남아 있다면 그 branch를 직접 pull해서 확인할 수도 있습니다.
- PR의 base branch는 변경을 합치려는 대상 branch입니다.
- PR의 head branch는 실제 작업 commit이 올라간 branch입니다.
- merge-base는 두 branch가 갈라진 공통 조상 commit을 찾을 때 사용합니다.
- merge-base부터 head까지 diff를 보면 PR이 의도한 변경 범위를 확인하기 쉽습니다.
- GitHub PR은 refs/pull 번호 head 형태의 ref로 로컬에 fetch할 수 있습니다.
- 최신 base 반영은 merge와 rebase 중 프로젝트 정책과 히스토리 관리 방식에 맞춰 선택합니다.
원문은 오래된 master 기준으로 열린 PR을 최신 기준에서 확인하고, PR 내용을 로컬 branch로 가져오는 방법을 정리했습니다. 보강 블록은 PR diff 기준과 fetch 절차의 목적을 먼저 설명하도록 다듬었습니다.
이어서 볼 글
- GitHub 기본 사용법: clone, push, pull, Pull Request - PR이 GitHub 협업 흐름에서 어떤 위치인지 확인하는 글이다.
- git branch 사용법: 생성, 전환, 삭제, 원격 브랜치 - PR 브랜치를 가져오고 전환하는 배경 글이다.
- git remote와 tag 명령어: 저장소 URL 변경, 태그 push, detached HEAD - remote branch fetch와 원격 주소 확인 흐름이 이어진다.
- git log 사용법: 커밋 기록, diff, 브랜치 그래프 - PR 변경 범위를 diff와 log로 확인하는 데 필요한 글이다.
branch생성시점의 master가 너무 오래돼서, 최신 master의 branch로 업데이트 하고 싶을때
방법1. merge
방법2. rebase
타인이 올린 PR의 Files changed를 터미널에서 확인하기
현재 master의 최신이 아닌 PR을 올린사람이 작업을 시작할때의 master가 기준이 됨에 유의
git fetch origin
git diff $(git merge-base origin/master origin/pr-branch-name)..origin/pr-branch-name
타인이 올린 PR을 내 로컬로 가져와서 검토하기

예를들어 위와 같은 PR이 올라왔다고 하자.
git fetch origin pull/51/head:bump-twisted 라고 치면 로컬에 "bump-twisted"라고 하는 브랜치가 생성된다(이것은 임의로 지정한 이름이며 생략하면 "pull/51/head"가 된다)
git branch를 해보면 아래처럼 bump-twisted라는 브랜치가 로컬 저장소에 추가된 것을 볼 수 있다.
$ git branch
* master
bump-twisted
아직은 master를 바라보고 있어 PR의 내용이 로컬저장소에 반영되지 않았다.
git checkout bump-twisted 라고 치면 반영된다.
만약 PR을 올린사람이 merge전에 PR의 내용을 변경했다면
git pull origin pull/51/head:bump-twisted 다시 이렇게 치면 된다.
위 방법대신
git branch -r을 해보면 다음처럼 이미 해당 PR들의 branch 들이 생성되어 있는 것을 볼 수 있는데,
(coin) sevity@raspberrypi:~/workspace/temp/coin_strategy $ git branch -r
origin/HEAD -> origin/master
origin/dependabot/pip/tornado-6.3.3
origin/dependabot/pip/twisted-23.8.0
origin/dependabot/pip/urllib3-1.26.18
origin/master
여기서 해당 PR을 확인하고 git pull origin dependabot/pip/twisted-23.8.0:bump-twisted 이렇게 하는 방법도 있다.
'Programming > Git' 카테고리의 다른 글
| git 초기 설정: user.name, editor, SSH 키 등록 (1) | 2023.06.06 |
|---|---|
| git log 사용법: 커밋 기록, diff, 브랜치 그래프 (0) | 2019.12.09 |
| git remote와 tag 명령어: 저장소 URL 변경, 태그 push, detached HEAD (0) | 2019.09.27 |
| git branch 사용법: 생성, 전환, 삭제, 원격 브랜치 (0) | 2019.04.17 |
| GitHub 기본 사용법: clone, push, pull, Pull Request (0) | 2018.11.07 |


