github의 원격 저장소에 올라온 PR을 로컬에 가져와서 실행해보라는 과제를 받았다.
나는 원격 저장소를 fork해서 그 리포지토리를 로컬에 가져와 실행해보고 있었기 때문에,
PR을 로컬에서 확인하기 위해서는 원격 저장소를 바로 로컬에 받아서 PR을 받아오는 수 밖에 없었다.
그럼 본인이 직접 하는거랑 내가 테스트하는 거랑 다를게 뭘까..? 하는 생각이 들어서,
뭔가 내가 fork한 리포지토리 내에서 PR을 받아야할 것 같다는 느낌이 들었다.
그래서 내 로컬의 terminal로 접근해 pr의 브랜치를 가져와서 pull 받으려고 하였으나,
fork 받은 리포지토리에는 pr 정보가 없어서 실패,
결국에는 원격 저장소 리포지토리를 그대로 다시 clone 받아서 찾아보았다. 코드는 다음과 같다.
git config --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
git fetch origin
git checkout -t origin/pr/{가져올 pr번호}
이렇게 해서 PR을 가져와 테스트해볼 수 있었다.
https://blog.outsider.ne.kr/1204
여기서 참고함
추가적으로, alias 즉 별칭을 사용해서 특정 Pull Request를 로컬에 가져올 수 있다.
여기서 보면, 나 같은 경우에는 현재 remote에 있는 리포지토리가 아닌 (fork한 원격 저장소를 clone한 상태)
본 리포지토리에 대한 pull Request 정보를 가져와야 하므로
'external'이라는 필드를 추가해 url과 fetch를 지정해주었다.
그리고 alias 필드에서 origin이 아닌 external에서 정보를 가져오도록 설정,
이렇게 해서
git pr <pull request 번호>
요렇게만 입력해주면 자동으로 브랜치가 나뉘어지고 (체크아웃 포함)
pull request가 로컬에 반영된다.
정말 편리한 것..
git pr-clean
명령어를 통해 가져온 브랜치를 한꺼번에 지워줄 수 있다.
'Other > git' 카테고리의 다른 글
[git] Commit되지 않은 Unstaged changes를 Local에서 삭제하는 방법 (0) | 2023.05.13 |
---|---|
[git] .gitignore 적용하기 (0) | 2023.03.25 |
Git Pull Request에 다른 브랜치의 커밋 로그까지 딸려오는 경우 해결방안 (0) | 2022.02.04 |
Git한테 호되게 혼난 후 고찰 (3) | 2022.01.26 |