Github Pull Request를 로컬에서 checkout하기
개발 흐름에 Pull Request(PR)를 도입하면 코드 리뷰와 협업이 한층 수월해집니다. 그러나 때로는 이러한 PR을 로컬 환경에서 직접 실행하고 테스트해보고 싶을 때가 있습니다. 복잡해 보일 수 있는 이 과정을 간단하고 명확하게 해결할 수 있는 방법을 소개합니다.
원격 저장소에서 Pull Request 가져오기
GitHub는 원격 저장소의 Pull Request를 로컬로 가져올 수 있는 기능을 제공합니다. 이 과정은 PR을 올린 사람의 저장소에서 직접 가져오는 방식이며, GitHub 인터페이스에서 안내를 제공합니다.
Pull Request 브랜치의 존재
PR은 단순 링크가 아니며, 원격 저장소에 refs/pull/NUM/head
라는 형태로 실제 브랜치가 존재합니다. 여기서 NUM
은 PR의 번호를 의미합니다. 이를 활용하면 다음과 같이 로컬에 PR을 가져올 수 있습니다:
bashCopy codegit fetch origin pull/NUM/head:pr-NUM
이 명령은 origin
원격 저장소에서 pull/NUM/head
를 pr-NUM
라는 로컬 브랜치로 가져옵니다.
자동으로 Pull Request를 로컬에 가져오기
.git/config
활용하기
.git/config
파일을 조작하여 Pull Request를 자동으로 가져오는 방법이 있습니다. 일반적으로 clone
을 실행하면 해당 저장소에 대한 정보가 이 파일에 등록됩니다. 이 파일에 fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
라는 패치 정보를 추가하면, Git에서 fetch할 때 원격 저장소의 모든 PR을 자동으로 가져오게 됩니다.
자동 업데이트의 편리함
원격 저장소의 PR을 자동으로 가져오면, 개발 서버에 PR을 적용하고 테스트하는 과정이 간단해집니다. 이 설정을 한 번 해두면, PR의 업데이트가 있을 때마다 자동으로 반영되므로 별도의 관리가 필요 없습니다.
.git/config
파일 보기 (전/후)
아마 vim .git/config
를 입력하면 다음처럼 작성이 되어 있을거예요:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/example.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
그럼 다음과 같이 코드를 추가해줍니다:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/example.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
# 바로 윗줄과 같이 추가해주세요.
[branch "main"]
remote = origin
merge = refs/heads/main
축하 드립니다 !
이제 git pull
혹은 git fetch
를 활용하여 pr에 올라온 브랜치들에 접근할 수 있어요. 🎉🎉