クイズ: cherry-pick と revert の応用
한국어 원문으로 표시합니다.
병합 커밋에 git revert 를 하면 -m 을 요구한다. 그 번호가 고르는 것은?
- 되돌릴 파일 개수의 상한
- 되돌린 뒤 남길 커밋 메시지의 형식 번호
- 어느 부모의 상태를 기준으로 삼을지
- 병합 전략(merge strategy)의 번호
병합을 되돌린 뒤 같은 기능 브랜치를 다시 git merge 했더니 Already up to date 가 나온다. 왜인가?
- merge 는 내용이 아니라 이력의 도달 가능성으로 판단하기 때문
- 되돌림 커밋이 그 브랜치를 병합 대상에서 제외하도록 표시하기 때문
- revert 가 기능 브랜치의 커밋들을 이력에서 지웠기 때문
- 되돌림 이후에는 같은 브랜치를 한 번 더 병합할 수 없기 때문
되돌렸던 기능을 다시 들이는 가장 곧은 방법은?
- 기능 브랜치를 새로 만들어 같은 변경을 다시 커밋한다
- 그 되돌림 커밋을 다시
git revert한다 git merge --no-ff --allow-unrelated-histories로 강제 병합한다- 병합 커밋으로
git reset --hard한 뒤 다시 push 한다
git cherry-pick -x 가 하는 일은?
- 가져온 커밋의 작성자를 원본 작성자로 바꾼다
- 충돌이 나면 원본 쪽 내용을 자동으로 채택한다
- 가져온 변경을 원본 브랜치에서 자동으로 제거한다
- 새 커밋 메시지 끝에 원본 커밋 해시를 한 줄로 남긴다
git cherry -v main release 출력의 - 표시는 무슨 뜻인가?
- 그 변경이 patch-id 기준으로 main 에 이미 들어가 있다
- 그 커밋이 release 에서 되돌려졌다
- 그 커밋이 병합 커밋이라 판정에서 제외됐다
- 그 커밋을 main 으로 가져오면 충돌이 난다
충돌을 해결해 가져온 커밋이 git cherry 에서 계속 + 로 나온다. 옳은 해석은?
- 가져오기가 실패해 그 변경이 실제로 반영되지 않았다
- 해결 과정에서 diff 가 달라져 patch-id 가 원본과 다르기 때문이다
-x를 빼고 가져와서 출처 정보가 없기 때문이다- 그 커밋이 아직 push 되지 않아 판정에서 빠진 것이다