Git 실전 · 되돌리기(reset·revert·reflog) · 퀴즈
퀴즈: 되돌리기
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
되돌릴 방법을 고르는 두 질문은?
- 커밋이 몇 개인가 / 브랜치가 몇 개인가
- 되돌릴 것이 어디에 있는가 / 그 커밋이 이미 다른 사람에게 갔는가
- 리모트가 있는가 / 태그가 있는가
- 스쿼시했는가 / 리베이스했는가
`git reset --mixed`(기본값)로 잃는 것은?
- 스테이징 상태만 잃는다
- 아무것도 잃지 않는다
- 커밋되지 않은 모든 변경을 잃는다
- reflog 를 잃는다
이미 푸시되어 여러 사람이 받아 간 커밋을 강제 푸시로 지우면?
- 모두의 로컬에서도 함께 사라진다
- 서버가 푸시를 거부한다
- 받아 간 사람들의 로컬은 그대로여서 그들이 다음에 푸시하면 지웠던 커밋이 되살아난다
- reflog 만 남고 객체는 즉시 삭제된다
머지 커밋을 revert 한 뒤 브랜치를 고쳐 다시 머지하면?
- 되돌렸던 변경이 다시 머지될 때 자동으로 돌아온다
- Git 이 충돌로 막아 준다
- 머지 커밋이 두 개 생긴다
- 되돌렸던 변경이 돌아오지 않는다 — Git 은 머지를 이력의 도달 가능성으로만 판단하기 때문
reflog 에 대한 설명 중 틀린 것은?
- 스테이징만 하고 커밋하지 않은 내용은 어떤 방법으로도 복구할 수 없다
- 브랜치를 삭제하면 그 브랜치의 참조 로그도 함께 삭제된다
- 기본 만료는 도달 가능 90일, 도달 불가 30일이다
- `git reflog expire --expire=now --all` 은 안전망을 즉시 없앤다
`git commit --amend` 로 메시지만 바꿨을 때 커밋 해시는?
- 반드시 달라진다 — 메시지도 커밋 객체의 일부이기 때문
- 그대로다 — 내용이 같기 때문
- 부모가 같으면 항상 같다
- 태그가 붙어 있을 때만 달라진다