문제 해결
6. 연습 문제
문제 1. detached HEAD 구하기
git checkout <해시> 로 이동해 커밋 하나를 만들었습니다. 이 커밋을 잃지 않고 hotfix 라는 브랜치로 만드는 명령을 쓰세요.
git switch -c hotfix문제 2. 잘못된 브랜치의 커밋 옮기기
main 에 실수로 커밋한 해시 abc1234 를 feature/x 로 옮기고 main 에서는 지우는 명령 순서를 쓰세요.
git switch feature/x
git cherry-pick abc1234
git switch main
git reset --hard HEAD~1cherry-pick 으로 복사한 뒤 원래 브랜치에서는 reset 으로 지웁니다.
문제 3. 버그 커밋 자동 찾기
테스트 스크립트 test.sh 가 있고 지금 HEAD 는 버그가 있으며 v1.0 태그는 정상입니다. bisect 로 자동 탐색하는 명령 순서를 쓰세요.
git bisect start
git bisect bad HEAD
git bisect good v1.0
git bisect run ./test.sh
git bisect reset문제 4. 큰 파일 찾기
저장소의 blob 을 크기순으로 상위 5개만 출력하는 명령을 쓰세요.
git rev-list --objects --all | \
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
awk '$1=="blob"{print $3, $2, $4}' | sort -rn | head -5cat-file --batch-check 로 각 오브젝트 크기를 뽑아 정렬합니다.
문제 5. 병합 충돌 되돌리기
git merge feature 가 충돌했고 아직 아무것도 해결하지 않았습니다. 병합 시작 전 상태로 완전히 되돌리는 명령을 쓰세요.
git merge --abort