풀 리퀘스트 미리 보기
브라우저에서 차이를 읽어 보면 코드가 잘 읽히는지는 알 수 있어요. 하지만 앱이 여전히 실행되는지는 알 수 없죠. 그걸 알아내려면 브랜치를 직접 돌려 봐야 하는데, 바로 여기서 사람들이 막혀요. 포크에서 온 풀 리퀘스트는 여러분이 한 번도 클론한 적 없는, 대개 푸시할 권한도 없는 저장소에 있기 때문이에요.
로컬 미리 보기는 대부분의 사람이 배울 일 없는 사실 하나로 그 문제를 풀어요. 포지는 모든 풀 리퀘스트의 헤드를 대상 저장소 위에 평범한 git 레퍼런스로 공개해요. 포크에 접근할 수 있을 필요도 없고, API 토큰도 필요 없으며, 두 번째 원격이 추가되지도 않아요. 페치 한 번이면 코드가 여러분 디스크에 있어요.

| 호스트 | PR 헤드가 있는 곳 |
|---|---|
| GitHub, GitHub Enterprise, Gitea, Forgejo, Gogs | refs/pull/<n>/head |
| GitLab (클라우드 및 자체 호스팅) | refs/merge-requests/<n>/head |
| Bitbucket Cloud, Bitbucket Server | refs/pull-requests/<n>/from |
| Azure DevOps | refs/pull/<n>/merge |
Gitcito는 한 번의 ls-remote로 이 네 가지를 모두 탐색하므로, 낯설거나 자체 호스팅된
포지라도 이 관례 중 하나를 따르기만 하면 동작해요.
여는 방법
- 사이드바의 풀 리퀘스트 목록 — 각 항목의 화살표 버튼. GitHub 전용인 상세 보기와 달리, 이 방법은 모든 호스트에서 동작해요.
- 명령 팔레트: 풀 리퀘스트 로컬에서 미리 보기.
- 풀 리퀘스트 상세 보기 안, "브라우저에서 열기" 버튼 옆.
무엇을 입력하나
원격 — 풀 리퀘스트가 대상으로 열린 저장소, 보통은 origin이에요. 포크가
아니에요.
풀 리퀘스트 — 번호, 또는 붙여 넣은 브라우저 URL. 7, #7,
https://github.com/owner/repo/pull/7 모두 동작하고, GitLab, Bitbucket, Azure DevOps의
URL 형태도 마찬가지예요. 찾기를 누르면 Gitcito가 아무것도 페치하기 전에, 자신이
해석한 레퍼런스와 그것이 가리키는 커밋을 알려줘요.
원격 브랜치 — 두 번째 탭으로, 찾을 PR 레퍼런스가 없을 때를 위한 것이에요. 그런 것을 공개하지 않는 호스트이거나, 그냥 한번 돌려 보고 싶은 브랜치일 때죠. 원격에 존재하는 그대로의 브랜치 이름을 입력하세요.
적용하는 두 가지 방식
어느 쪽도 커밋을 만들지 않아요. 의도적이에요 — 그냥 두고 떠날 수 없는 미리 보기는 미리 보기가 아니니까요.
| 방식 | 무슨 일이 일어나는가 | 되돌리는 법 |
|---|---|---|
| 로컬 브랜치 | 레퍼런스가 자기 브랜치(기본값 pr/7)로 페치되고 체크아웃돼요. 다른 브랜치는 건드리지 않아요. |
되돌리기는 원래 있던 브랜치로 돌아가고 미리 보기 브랜치를 삭제해요. |
| 커밋하지 않은 머지 | 레퍼런스가 --no-commit --no-ff로 현재 브랜치에 머지되어, 합쳐진 트리가 스테이징된 채 남아 빌드하고 테스트할 수 있어요. |
되돌리기는 머지를 중단해요. |
같은 풀 리퀘스트를 두 번 미리 보면 같은 브랜치를 재사용하며 새 헤드로 옮겨요 — 여러분이 테스트하는 동안 작성자가 수정을 푸시할 때 편리하죠. 그 브랜치가 이미 있으면 Gitcito가 그렇다고 알리고 리셋하기 전에 물어요. 거기에만 존재하는 커밋은 사라질 테니까요.
하지 않는 일
- 호스트가 공개하지 않는 레퍼런스를 지어내지는 못해요. 일부 자체 호스팅 구성은 PR 레퍼런스를 비활성화하고, 애초에 그런 것이 없었던 포지도 있어요. "#n에 대한 레퍼런스 없음"이라는 분명한 안내와 함께, 원격 브랜치 탭이 해결책으로 제시돼요.
- 태그는 페치하지 않아요. 미리 보기가 남의 태그 네임스페이스를 여러분 저장소로 끌고 들어와서는 안 되니까요.
- 머지 방식은 깨끗한 작업 트리를 요구해요. git은 커밋되지 않은 작업 위로 머지하기를 거부해요. 먼저 스태시하세요.
- 미리 보기는 리뷰가 아니에요. 코드를 여러분 컴퓨터에 올려놓을 뿐, 무엇도 승인하거나 코멘트하거나 머지하지 않아요. 그건 호스팅과 풀 리퀘스트예요.
- 비공개 포크는 계속 비공개예요. PR 레퍼런스는 대상 저장소가 제공하므로, 접근 권한은 그 원격에 대한 여러분의 자격 증명을 따라요 — 보안을 보세요.
정리하기
미리 보기 브랜치는 평범한 브랜치예요. 다 썼으면 사이드바에서 삭제하거나, 미리 본 직후에 되돌리기를 누르세요. 커밋하지 않은 채 남은 미리 보기 머지는 되돌리기로 버릴 수 있고, 결국 원하기로 마음먹었다면 충돌을 해결하고 커밋할 수도 있어요 — 그 순간 그것은 미리 보기이기를 그만두고 머지가 돼요.