홈 › GitHub › 02 / 5

Pull Request 흐름

섹션 7진행 0 / 5

3. 코드 예제

예제 1: 브랜치 올리기와 PR 템플릿 — 01_pull_request.sh 발췌

bash
# .github/PULL_REQUEST_TEMPLATE.md 추가 (내용은 2.5 참고)
git add .github/PULL_REQUEST_TEMPLATE.md
git commit -m "커밋2: PR 템플릿 추가"
git push -u origin main

git switch -c feat/login
git add Login.java
git commit -m "feat: 로그인 폼 추가"
git add Login.java
git commit -m "feat: 로그인 입력 검증 추가"
git log --oneline main..feat/login
git push -u origin feat/login
git branch -vv
text
6637155 feat: 로그인 입력 검증 추가
b166ffb feat: 로그인 폼 추가
branch 'feat/login' set up to track 'origin/feat/login'.
To WORK/origin.git
 * [new branch]      feat/login -> feat/login
* feat/login 6637155 [origin/feat/login] feat: 로그인 입력 검증 추가
  main       5b87c80 [origin/main] 커밋2: PR 템플릿 추가

switch -c 로 만든 브랜치에 커밋 두 개를 쌓고 push -u 로 올렸습니다. branch -vv 의 [origin/feat/login] 표시가 추적이 설정됐다는 뜻입니다.

예제 2: 로컬에서 PR 미리 보기 — 01_pull_request.sh 발췌

bash
git log --oneline origin/main..feat/login
git diff --stat origin/main...feat/login
git request-pull origin/main "$ORIGIN" feat/login
text
6637155 feat: 로그인 입력 검증 추가
b166ffb feat: 로그인 폼 추가
 Login.java | 7 +++++++
 1 file changed, 7 insertions(+)
The following changes since commit 5b87c808a64bd226ee993d053a2f5414a3438afa:

  커밋2: PR 템플릿 추가 (2026-01-05 09:01:00 +0900)

log·diff 결과가 PR 화면의 Commits·Files changed 탭과 같습니다. request-pull 은 GitHub 없이 이메일 등으로 리뷰를 요청할 때 쓰는 오래된 방법으로, 뒤에는 커밋 범위와 shortlog·diffstat 이 이어집니다.

예제 3: 관리자 확인과 리뷰 반영 — 01_pull_request.sh 발췌

bash
# 관리자 clone 에서
git fetch origin feat/login
git log --oneline main..origin/feat/login
git diff --stat main...origin/feat/login

# 개발자가 리뷰 지적을 반영
git add Login.java
git commit -m "fix: 리뷰 반영 - 공백 처리 추가"
git push origin feat/login
text
6637155 feat: 로그인 입력 검증 추가
b166ffb feat: 로그인 폼 추가
 Login.java | 7 +++++++
 1 file changed, 7 insertions(+)
To WORK/origin.git
   6637155..d7ff95e  feat/login -> feat/login
d7ff95e fix: 리뷰 반영 - 공백 처리 추가
6637155 feat: 로그인 입력 검증 추가
b166ffb feat: 로그인 폼 추가

관리자는 자신의 clone 에서 fetch 만으로 PR 내용을 그대로 확인합니다. 반영 커밋을 push 하면 같은 브랜치이므로 PR 은 자동으로 갱신됩니다.

예제 4: 병합과 정리 — 01_pull_request.sh 발췌

bash
git fetch origin feat/login
git switch main
git merge --no-ff -m "Merge pull request #1 from feat/login: 로그인 폼 추가" origin/feat/login
git push origin main
git log --oneline --graph -5

git push origin --delete feat/login
git branch -d feat/login
git fetch --prune
text
To WORK/origin.git
   5b87c80..6992078  main -> main
*   6992078 Merge pull request #1 from feat/login: 로그인 폼 추가
|\
| * d7ff95e fix: 리뷰 반영 - 공백 처리 추가
| * 6637155 feat: 로그인 입력 검증 추가
| * b166ffb feat: 로그인 폼 추가
|/
* 5b87c80 커밋2: PR 템플릿 추가
To WORK/origin.git
 - [deleted]         feat/login
Deleted branch feat/login (was d7ff95e).
* main 6992078 [origin/main] Merge pull request #1 from feat/login: 로그인 폼 추가

병합 뒤 push --delete 로 원격 브랜치를, branch -d 로 로컬 브랜치를 지웠습니다. fetch --prune 이후 branch -vv 에는 더 이상 feat/login 이 보이지 않습니다.