Git 주니어 기술면접

Git 주니어 (1~3년) 종합 5문항 조회수 110 · 2026-06-18 (목) 03:10:43
1 Git 브랜치 관리
Easy

Q. git branch -d와 git branch -D 옵션의 차이점을 설명하고, 각각 어떤 상황에서 사용해야 하는지 말씀해주세요.

A. 모범답안

git branch -d는 브랜치를 안전하게 삭제하는 옵션으로, 해당 브랜치가 이미 merge되었을 때만 삭제를 허용합니다. git branch -D는 강제 삭제 옵션으로, merge 여부와 관계없이 브랜치를 삭제합니다. -d는 작업이 완료되어 merge된 브랜치를 정리할 때 사용하고, -D는 실수로 만든 브랜치나 더 이상 필요 없는 작업 중인 브랜치를 강제로 삭제할 때 사용합니다. 강제 삭제 시에는 복구가 어려우므로 신중하게 사용해야 합니다.

핵심 포인트
  • • -d는 merge된 브랜치만 삭제 가능한 안전한 옵션
  • • -D는 merge 여부와 무관하게 강제 삭제하는 옵션
  • • 강제 삭제된 브랜치는 복구가 어려우므로 주의 필요
Follow-up 질문

실수로 -D 옵션으로 브랜치를 삭제했을 때 복구할 수 있는 방법이 있나요?

2 Git 협업 전략
Medium

Q. upstream과 origin의 개념을 설명하고, fork한 저장소에서 원본 저장소의 최신 변경사항을 동기화하는 방법을 단계별로 설명해주세요.

A. 모범답안

origin은 자신이 fork한 원격 저장소를 가리키고, upstream은 원본(original) 저장소를 가리킵니다. 동기화 과정은 먼저 git remote add upstream [원본 저장소 URL]로 upstream을 추가하고, git fetch upstream으로 원본 저장소의 최신 변경사항을 가져옵니다. 그 다음 git merge upstream/main 또는 git rebase upstream/main으로 로컬 브랜치에 병합하고, 마지막으로 git push origin main으로 자신의 fork 저장소에 반영합니다. 이를 통해 오픈소스 프로젝트 기여 시 원본과의 동기화를 유지할 수 있습니다.

핵심 포인트
  • • origin은 fork한 저장소, upstream은 원본 저장소
  • • git fetch upstream으로 원본의 최신 변경사항 가져오기
  • • merge 또는 rebase로 로컬에 반영 후 자신의 fork에 push
Follow-up 질문

upstream/main을 병합할 때 merge와 rebase 중 어떤 것을 선택하는 것이 좋을까요?

3 Git 히스토리 관리
Medium

Q. git reflog의 용도를 설명하고, reset이나 rebase로 잃어버린 커밋을 복구하는 방법을 말씔해주세요.

A. 모범답안

git reflog는 HEAD의 이동 기록을 시간순으로 보여주는 명령어로, reset이나 rebase 등으로 커밋 히스토리가 변경되어도 모든 참조 변경 기록을 추적합니다. 잃어버린 커밋을 복구하려면 먼저 git reflog로 복구하려는 커밋의 해시값을 찾고, git reset --hard [커밋해시] 또는 git checkout [커밋해시]로 해당 시점으로 돌아갈 수 있습니다. reflog는 일정 기간(기본 90일) 후 자동으로 삭제되므로, 문제를 발견하면 빠르게 복구하는 것이 중요합니다.

핵심 포인트
  • • reflog는 HEAD의 모든 이동 기록을 시간순으로 추적
  • • reset, rebase 등으로 사라진 커밋도 reflog에서 찾을 수 있음
  • • reflog 기록은 기본 90일 후 삭제되므로 빠른 복구 필요
Follow-up 질문

git reflog와 git log의 차이점은 무엇인가요?

4 Git 성능 최적화
Medium

Q. git clone 시 --depth 옵션의 의미와 shallow clone의 장단점을 설명하고, 실무에서 어떤 경우에 사용하면 좋을지 말씀해주세요.

A. 모범답안

git clone --depth 옵션은 지정한 개수만큼의 최근 커밋 히스토리만 가져오는 shallow clone을 수행합니다. 장점은 다운로드 시간과 저장 공간을 크게 절약할 수 있고, 대용량 저장소를 빠르게 클론할 수 있다는 점입니다. 단점은 전체 히스토리가 없어 과거 커밋을 조회하거나 특정 시점으로 checkout하는 데 제한이 있고, 일부 Git 작업이 제한될 수 있습니다. CI/CD 파이프라인에서 빌드만 수행하거나, 대용량 저장소에서 최신 코드만 필요한 경우에 유용합니다.

핵심 포인트
  • • shallow clone은 최근 커밋만 가져와 시간과 공간 절약
  • • 전체 히스토리가 없어 일부 Git 작업에 제한
  • • CI/CD 빌드나 최신 코드만 필요한 경우 유용
Follow-up 질문

shallow clone한 저장소를 나중에 전체 히스토리를 가진 저장소로 변환할 수 있나요?

5 Git 파일 추적
Easy

Q. git rm과 git rm --cached의 차이점을 설명하고, 각각 어떤 상황에서 사용하는지 말씀해주세요.

A. 모범답안

git rm은 파일을 워킹 디렉토리에서 실제로 삭제하고 Git 추적에서도 제거하는 명령어입니다. git rm --cached는 파일을 워킹 디렉토리에는 남겨두고 Git 추적에서만 제거합니다. git rm은 더 이상 필요 없는 파일을 프로젝트에서 완전히 삭제할 때 사용하고, git rm --cached는 실수로 추적하게 된 파일(예: 환경설정 파일, 빌드 결과물)을 .gitignore에 추가하면서 로컬에는 유지하고 싶을 때 사용합니다.

핵심 포인트
  • • git rm은 파일을 실제로 삭제하고 추적도 중단
  • • git rm --cached는 파일은 유지하고 추적만 중단
  • • --cached는 .gitignore 추가 시 기존 추적 파일 제거에 유용
Follow-up 질문

git rm --cached로 제거한 파일이 이미 원격 저장소에 있다면 어떻게 되나요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!