LabHub

Git 실전 · 리베이스와 충돌 · 퀴즈

퀴즈: 리베이스와 충돌

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 리베이스하면 커밋 해시가 바뀌는 이유는?

    1. Git 이 리베이스 때마다 타임스탬프를 갱신해서
    2. 리베이스가 커밋을 압축해서
    3. 커밋 객체 안에 부모 해시가 들어 있어서 부모가 달라지면 해시가 반드시 달라지기 때문
    4. 브랜치 이름이 해시 계산에 들어가서
  2. 리베이스 황금률의 가장 정확한 형태는?

    1. 이미 푸시한 커밋은 절대 리베이스하지 않는다
    2. 다른 사람의 작업이 그 위에 쌓여 있는 커밋은 재작성하지 않는다
    3. 머지 커밋이 있는 브랜치는 리베이스하지 않는다
    4. main 브랜치는 절대 리베이스하지 않는다
  3. 같은 충돌이 리베이스에서 여러 번 반복되는 이유는?

    1. 리베이스가 커밋을 하나씩 다시 적용하며 매번 삼자 병합을 하므로 N번의 병합이기 때문
    2. Git 이 한 번 푼 충돌 해법을 캐시해 두지 않기 때문
    3. 인덱스가 매번 초기화되기 때문
    4. 리베이스가 공통 조상을 찾지 못하기 때문
  4. `--force-with-lease` 에도 남아 있는 구멍은?

    1. 태그는 검사하지 않는다
    2. 서버 쪽이 shallow clone 이면 검사가 통째로 무시된다
    3. IDE 가 방금 fetch 했다면 원격 추적 참조가 이미 갱신돼 내가 보지 못한 커밋이 있어도 검사를 통과한다
    4. 브랜치 이름이 바뀌면 항상 실패한다
  5. `merge.conflictStyle zdiff3` 를 권하는 이유는?

    1. 충돌 표식이 짧아져서
    2. 겹치지 않는 충돌을 자동으로 해결해 주기 때문
    3. 리베이스 속도가 빨라지기 때문
    4. 상대가 무엇을 바꿨는지가 아니라 둘 다 무엇에서 출발했는지를 보여 주기 때문
  6. 대화형 리베이스에서 '합치되 그 커밋의 메시지는 버리는' 동사는?

    1. squash
    2. reword
    3. edit
    4. fixup