오늘의 영어 표현 12/30 · 단계: PR 설명. 예문은 모두 이 글을 위해 지어낸 것입니다. 실제 저장소의 PR 을 옮긴 것이 아니며, 브랜치와 번호는 예시입니다.
목차
한눈에 보기
| 표현 | Rebased onto main (to resolve conflicts). |
| 뜻 | main 의 최신 커밋 위로 브랜치를 다시 쌓았습니다(충돌을 풀기 위해). |
| 쓰는 자리 | PR 댓글, 리뷰 답글, 리뷰어의 요청 |
| 공손함 | 중립. 작업 보고입니다 |
1. 뜻과 뉘앙스
rebase 는 Git 명령 이름이 그대로 동사가 된 말입니다. 내 브랜치의 커밋들을 떼어 내어 다른 커밋 위로 다시 쌓는 작업입니다. 그래서 전치사는 「~위로」라는 뜻의 onto 를 씁니다. rebase onto main 은 「main 의 끝 위로 다시 쌓다」입니다. 일상에서는 rebase on main 이라고도 쓰지만, Git 문서도 --onto 라는 옵션 이름을 쓰듯 onto 가 더 정확한 그림을 줍니다.
리뷰어가 이 말을 알고 싶어 하는 이유는 rebase 가 커밋 해시를 바꾸기 때문입니다. rebase 한 브랜치를 올리려면 강제 푸시(force push)가 필요하고, GitHub 의 PR 화면에서는 이전에 보던 커밋이 사라진 것처럼 보입니다. 그래서 「코드 내용은 그대로이고 바탕만 최신으로 바꿨다」고 알리는 한 줄이 리뷰어의 시간을 아낍니다.
merge 와의 차이도 알아 둡니다. merge main into my branch 는 main 을 내 브랜치에 합치는 병합 커밋을 만듭니다. rebase 는 병합 커밋 없이 이력을 한 줄로 유지합니다. 어느 쪽을 원하는지는 저장소마다 다릅니다. CloudNativePG 의 기여 문서는 GitHub 를 병합 커밋 없는 선형 이력(linear development)으로 설정해 두었다고 밝힙니다. 이런 저장소에서는 rebase 가 기본입니다.
강제 푸시를 할 때는 git push --force-with-lease 를 쓰는 습관을 들이면 좋습니다. 원격 브랜치가 내가 마지막으로 본 상태와 다르면 푸시를 거절하므로, 메인테이너가 내 브랜치에 얹은 커밋을 실수로 지우지 않습니다.
2. 예문
상황 1: 충돌을 해결한 뒤
Rebased onto main to resolve the conflict in
go.mod. No other changes.
No other changes 를 붙이면 리뷰어는 다시 볼 것이 없다는 것을 압니다.
상황 2: 리뷰어가 요청할 때
Could you rebase onto the latest main? #3300 changed the same function and CI is failing on this branch.
상황 3: rebase 와 수정이 섞였을 때
Rebased onto main and addressed the review comments. The only new change is in
validate.go; everything else is from the rebase.
rebase 로 바뀐 부분과 직접 고친 부분을 나눠서 알려 주면 리뷰어가 다시 볼 곳만 봅니다.
3. 비슷한 표현과 차이
- Merged main into this branch. 병합 커밋을 만들었다는 뜻입니다. 선형 이력을 원하는 저장소에서는 다시 rebase 해 달라는 요청을 받을 수 있습니다.
- Force-pushed. 강제 푸시했다는 보고입니다. Sorry for the force-push 처럼 리뷰 도중의 강제 푸시를 미리 사과하기도 합니다.
- Synced with upstream. 포크를 원본 저장소와 맞췄다는 넓은 뜻입니다. rebase 인지 merge 인지는 알려 주지 않습니다.
4. 한국인이 자주 하는 실수
- I updated the branch to latest. 무엇의 최신인지, rebase 인지 merge 인지 알 수 없습니다.
- 고친 문장: Rebased onto the latest main.
- I did rebase. do 를 붙이지 않고 rebase 자체를 동사로 씁니다.
- 고친 문장: I've rebased the branch.
- Rebased to main. 틀렸다고 하기는 어렵지만 onto 가 동작을 더 정확히 그립니다.
- 고친 문장: Rebased onto main.
5. 한 줄 연습
다음 한국어 문장을 PR 댓글로 바꿔 쓰십시오.
main 최신으로 리베이스해서 충돌을 해결했습니다. 코드 변경은 없습니다.
모범 답안
Rebased onto the latest main to resolve conflicts. No code changes.
conflicts 는 여러 파일의 충돌을 뭉뚱그려 복수로 씁니다. 하나뿐이라면 the conflict 라고 씁니다.
티티 한마디. 커밋 해시가 바뀌는 일은 한 줄로 알려 둡니다. 리뷰어가 처음부터 다시 읽지 않아도 됩니다.
참고
- Git 문서, git-rebase: https://git-scm.com/docs/git-rebase
- Git 문서, git-push(
--force-with-lease): https://git-scm.com/docs/git-push - CloudNativePG, Contributing to the source code: https://github.com/cloudnative-pg/cloudnative-pg/blob/main/contribute/README.md