2022년에 알아야 할 Git 인터뷰 질문 및 답변 상위 30개
게시 됨: 2021-01-04Git의 인기가 높아지고 있습니다. 개발자는 버그를 수정하거나 기능을 개선하기 위해 베타가 아닌 앱의 최신 버전을 출시하기 위해 지속적으로 노력하고 있습니다. Git은 모든 변경 사항이 하나의 중앙 저장소에 저장되는 버전 제어 역할을 합니다.
팀의 모든 개발자는 버전을 보고 변경한 다음 업로드할 수 있습니다. 원격 팀에서 일하거나 집에서 일하는 사람들에게도 매우 효과적입니다. Git은 개발자만 사용하는 것이 아닙니다. 팀의 비개발자도 이를 사용하여 최신 버전 또는 특정 버전의 앱을 다운로드하고 테스트 또는 기타 작업에 사용할 수 있습니다.
Git이 명령줄 도구인 경우 Git Hub는 프로그래머가 프로젝트를 저장하고 팀과 통신하는 센터입니다.
따라서 Git에 대한 지식이 필요하고 수요가 증가함에 따라 취업에 도움이 될 Git 인터뷰 질문 세트를 만들었습니다. 이해를 돕기 위해 GitHub 인터뷰 질문을 초급, 중급 및 고급의 세 섹션으로 나눕니다.
목차
기본 수준 Git 인터뷰 질문
Q.1) SVN과 Git의 차이점 설명
- SVN은 3세대에 속하는 분산형 버전 관리 도구인 Git과 달리 2세대에 속하는 중앙 집중식 버전 관리 도구입니다.
- SVN에서 서버 측 저장소는 버전 기록을 저장합니다. Git에서는 전체 저장소를 PC에 복사할 수 있습니다.
- SVN에서는 오프라인 상태에서도 커밋할 수 있는 Git과 달리 온라인 상태에서만 커밋할 수 있습니다.
- pull 및 push 작업은 더 빠른 Git에 비해 SVN에서 더 느립니다.
- SVN에서 작업은 자동으로 공유되는 Git과 달리 공유할 때까지 공유되지 않습니다.
Q.2) Git이 무엇인가요?

Git을 사용하면 개발자와 팀 구성원이 누구나 변경한 내용을 추적할 수 있습니다. 또한 이전 버전으로 돌아갈 수 있습니다. 누가, 언제, 어느 날짜에 변경을 했는지 팀이 알 수 있도록 도와주는 분산 버전 관리 시스템입니다. 다른 버전 관리 시스템에 비해 고유한 장점이 있습니다.
Git의 가장 큰 장점은 프로젝트의 모든 버전을 저장하기 위해 중앙 서버에 의존하지 않는다는 것입니다. 개발자는 전체 기록을 보여주는 자신의 시스템에 리포지토리의 복제본(사본)을 만들 수 있습니다. 이것은 특히 서버 중단이 있을 때 도움이 됩니다. Git에는 프로그래머나 팀 구성원이 변경 사항을 커밋하고 팀과 공유할 수 있는 중앙 클라우드 저장소가 있습니다.
Q.3) GitHub와 Git의 차이점은 무엇인가요?
Git 리포지토리 호스팅 서비스를 GitHub라고 합니다. 또한 웹 기반 그래픽 인터페이스를 제공하는 것과 같은 자체 기능이 있습니다. 또한 GitHub는 프로젝트 관리 도구 역할 외에 액세스 권한도 제공합니다.
반면 Git은 분산형 버전 관리 시스템입니다. 베타가 아닌 앱에서 변경된 사항을 추적하는 데 주로 사용됩니다. 속도, 지원 및 데이터 무결성을 제공합니다. 개발자와 다른 팀 구성원은 누가 어떤 날짜에 어떤 내용을 변경했는지 확인할 수 있습니다.
Q.4) 버전 관리 시스템을 사용하면 어떤 이점이 있습니까?
버전 제어 시스템이 번거로움 없이 공통 버전에서 수정한 내용을 병합할 수 있는 유연성을 제공하므로 팀과 구성원이 언제든지 작업할 수 있기 때문에 도움이 됩니다.
기록에는 모든 이전 버전과 해당 변형이 표시되므로 필요한 경우 팀 구성원이 되돌릴 수 있습니다. 팀 구성원은 전체 프로젝트의 스냅샷도 가지고 있습니다.
팀 구성원은 수정 사항이 있을 때 의견을 말해야 하며, 이는 다른 사람들이 정확한 변경 사항이 프로젝트를 보다 체계적으로 만드는 것을 이해하는 데 도움이 됩니다. 아무도 설명을 기다릴 필요가 없습니다. 팀 구성원은 버전을 변경한 사람과 이유를 정확히 알고 있습니다.
불행한 서버 중단이 있는 경우 Git과 같은 분산 VCS를 사용하면 데스크톱에서 다운로드할 수 있으므로 프로젝트의 전체 기록을 보유할 수 있습니다.
Q.5) Git은 어떤 언어를 사용하나요?
Git이 사용하는 언어는 'C' 언어인데, GIT가 요구하는 속도는 다른 고급 언어와 달리 런타임을 줄여주기 때문에 'C' 언어로 만족할 수 있기 때문이다.
Q.6) Git 리포지토리 호스팅 기능을 알려주세요.
- 깃허브
- Gitlab
- 소스포지
- 비트버킷
- GitEnterprise
Q.7) Git에 어떻게 커밋합니까?
커밋 메시지를 작성하려면 "git commit -a" 명령을 작성해야 합니다.
명령줄의 -a는 변경된 모든 추적 파일의 최신 내용을 커밋하도록 git에 명령합니다. 새 파일을 처음 커밋해야 하는 경우 git commit -a 전에 "git add <file>" 명령을 사용할 수 있습니다.
Q.8) 깨진 커밋을 어떻게 고칠 수 있습니까?
"git commit –amend" 명령을 사용하여 깨진 커밋을 수정할 수 있습니다. 이 명령을 실행하여 편집기에서 깨진 커밋 메시지를 수정합니다.
읽기: Nagios의 주요 인터뷰 질문
Q.9) Git에서 저장소란 무엇을 의미합니까?
Git이 모든 파일을 저장하는 곳입니다. Git에는 원격 저장소와 로컬 저장소 모두에 파일을 저장할 수 있는 기능이 있습니다.
Q.10) 저장소는 어떻게 만들 수 있나요?
Git에서 저장소를 만드는 것은 간단합니다. 아직 완료되지 않은 경우 프로젝트에 대한 디렉토리를 작성해야 합니다. 그런 다음 "git init" 명령을 실행해야 합니다. 이 명령은 프로젝트 디렉토리에 git 디렉토리를 생성합니다.
Q.11) Git에서 'bare repository'를 설명하면?
베어 Git 리포지토리는 일반적으로 팀 구성원이나 다른 사람들과 공유하는 원격 리포지토리로 사용됩니다. 원격 저장소 내부에서 수행된 작업이 없기 때문에 내부에 작업 트리가 없습니다. 다른 파일에는 편집할 파일이 없습니다. 반대로 작업 디렉토리에는 모든 버전 기록과 작업 트리가 있는 .git 하위 디렉토리가 있습니다.
Q.12) git에서 '충돌'이란 무엇을 의미합니까?
일반적으로 Git은 자동 병합 기능을 사용하여 모든 병합을 관리합니다. 그러나 두 개의 개별 분기가 파일의 똑같은 줄에서 편집 내용을 받으면 충돌이 발생할 수 있습니다. 파일이 한 분기에서 삭제되었지만 다른 분기에서 편집된 경우에도 발생할 수 있습니다. 이는 팀 환경에서 작업할 때 발생합니다.
Q.13) git is-tree란 무엇인가요?
'git is-tree'는 모드와 항목 이름, 그리고 트리 또는 블롭의 SHA-1 값으로 구성된 트리 개체를 나타냅니다.
중급 Git 인터뷰 질문
Q. 14) Git에서 충돌이 발생하면 어떻게 해결하나요?
다음과 같은 방법으로 Git에서 충돌을 해결할 수 있습니다.
- 어떤 파일이 충돌을 일으켰는지 확인합니다.
- 해당 특정 파일을 변경하여 충돌을 해결하십시오.
- git add 명령으로 이 파일을 다시 추가합니다.
- git commit 명령을 사용하여 파일을 커밋합니다.
Q.15) 커밋이 이미 푸시되어 공개된 경우 Git에서 어떻게 되돌리나요?
상황에 따라 이 작업을 수행할 수 있는 두 가지 방법이 있습니다.
- 완전히 제거하거나 새 커밋에서 잘못된 파일을 수정한 다음 원격 저장소로 다시 푸시할 수 있습니다. 이것은 이 문제를 해결하기 위해 가장 일반적으로 사용되는 방법입니다. git commit -m "commit message" 명령을 사용하여 파일에 관련 변경 사항을 적용한 후 원격 저장소에 커밋합니다.
- 또는 잘못된 커밋에서 수행된 모든 수정 사항을 취소하는 새 커밋을 만들 수 있습니다. git revert <나쁜 커밋 이름> 명령을 사용하여 이 작업을 수행할 수 있습니다.
읽기: 애자일 인터뷰 질문 및 답변
Q.16) 서브깃이란?

SVN에서 Fit으로 마이그레이션할 수 있는 도구입니다. 로컬 또는 원격 Subversion 저장소의 쓰기 가능한 Git 미러를 생성하고 원하는 만큼 Subversion과 Git을 모두 사용합니다. SubGit을 사용하여 기존 Subversion 저장소의 양방향 Git-SVN 미러를 만들 수 있습니다. Subversion에서 Git으로 일회성 가져오기를 빠르게 수행할 수도 있습니다.
Q.17) git pull 명령어와 git fetch 명령어의 차이점은 무엇인가요?
Git pull 명령은 중앙 저장소의 정확한 분기에서 모든 새로운 변경 사항 또는 커밋을 검색하고 로컬 저장소의 대상 분기를 업데이트합니다.
Git fetch 명령은 비슷한 용도로 사용되지만 약간의 차이가 있습니다. 가져올 때 정확한 분기에서 모든 새 커밋을 검색하고 로컬 저장소의 새 분기에 저장합니다. 이러한 변경 사항을 대상 브랜치에 반영하려면 git merge를 호출해야 합니다.
따라서 Git pull = git fetch + git merge.
Q.18) Git에서 '인덱스' 또는 '스테이징 영역'이란 무엇입니까?
커밋하기 전에 변경 사항을 포맷하거나 검토할 수 있는 중간 영역을 Git에서 인덱스 또는 스테이징 영역이라고 합니다.
Q.19) git stash가 무엇인가요? 어떻게 적용합니까?
다른 브랜치에서 우선적으로 작업해야 하기 때문에 작업을 일시 중지해야 하는 경우가 있습니다. 완성된 단계가 아니라서 반쯤 완성한 작업을 커밋할 수는 없지만 짧은 시간에 돌아와서 작업하고 싶습니다. 이 문제를 해결하려면 git slash에서 도움을 제공하세요.
나중에 완료하고 커밋할 수 있는 미완성 변경 스택에 저장합니다. 이 작업으로 돌아가려면 git stash를 호출하여 명령을 적용하기만 하면 됩니다. 그것은 당신이 당신의 작업 디렉토리에 남겨둔 곳에서 당신의 작업을 가져옵니다.
Q. 20) git diff는 'git status'와 어떻게 다른가요?
'git diff'는 'git status'와 거의 유사합니다. 둘 다 가진 유일한 차이점은 전자가 다양한 커밋 간의 차이점을 드러낸다는 것입니다. '
Q.21) 'git remote'는 'git clone'과 어떻게 다른가요?
특정 URL의 이름을 언급하는 항목을 git 구성에 생성하려면 'git remote add'를 사용합니다. 반면에 'git clone'은 URL에 있는 기존 저장소를 복사하여 새 git 저장소를 만듭니다.
읽기: 주요 React 인터뷰 질문 및 답변
Q.22) 분기 전략 설명
모든 회사에는 고유한 분기 전략이 있습니다. 다음은 인기 있는 것 중 일부입니다.
- 기능 분기 – 기능 분기 모델은 분기 내부의 특정 기능에 대한 모든 변경 사항을 저장합니다. 철저한 테스트를 거친 후에야 이 분기가 마스터와 병합됩니다.
- 릴리스 분기 – 개발 분기가 일종의 릴리스 준비가 된 지점에 도달하면 복제하거나 복사하여 릴리스 분기를 형성할 수 있습니다. 복제 후에는 새로운 기능이 추가되지 않습니다. 버그를 수정하거나 문서화하거나 릴리스 개선과 관련된 활동만 할 수 있습니다. 테스트가 끝나면 마스터와 병합되고 버전 번호를 얻습니다. 또한 릴리스가 만들어진 이후로 이전되었을 수 있는 개발 분기로 다시 병합되어야 합니다.
- 작업 분기 – 이 모델에서 각 작업은 분기 이름에 작업 키가 있는 개별 분기에서 수행됩니다. 분기 이름에서 작업 키를 보면 어떤 코드가 어떤 작업을 수행하는지 명확하게 알 수 있습니다.
Q.23) Gitflow 워크플로에 대해 설명해주세요.
Gitflow는 마스터 및 개발인 두 개의 장기 실행 병렬 분기를 사용하여 특정 프로젝트 기록을 저장합니다.
- 마스터 – 분기할 준비가 되었습니다. 이 지점에서 모든 것이 테스트되고 승인됩니다.
- 핫픽스 – 이 분기는 프로덕션 릴리스를 빠르게 패치하는 데 사용됩니다. 기능 분기 및 릴리스 분기와 거의 같습니다. 게다가, 그들은 개발 대신 마스터를 기반으로합니다.
- 개발 – 모든 기능 분기가 이 분기에 병합됩니다. 이것들은 테스트를 거치는 것입니다. 엄격한 테스트를 거쳐야 마스터 브랜치와 병합됩니다.
- 기능 – 각각의 새로운 기능은 자체 브랜치에 있어야 하며, 그런 다음 개발 브랜치인 부모 브랜치로 푸시됩니다.
Q. 24) 브랜치가 마스터로 병합되었는지 어떻게 알 수 있나요?
다음 명령을 사용하면 병합 여부를 알 수 있습니다.
git branch –merged – 현재 브랜치에 병합된 모든 브랜치를 나열합니다. 그런 다음 있는지 여부를 확인할 수 있습니다.
git branch –no-merged – 또는 이 명령을 사용하여 마스터 분기와 병합되지 않은 모든 분기를 확인할 수 있습니다.
Q.25) 파일 시스템에서 파일을 삭제하지 않고 어떻게 git에서 파일을 제거할 수 있습니까?
Git에 파일을 추가하는 동안 잘못된 파일이 추가되지 않도록 주의해야 합니다. git rm 명령은 스테이징 영역과 파일 시스템 모두에서 제거하므로 대신 git reset 명령을 사용해야 합니다.
git reset filename 또는 echo filename >> .gitingore를 사용할 수 있습니다.
Q.26) Git에서 rebase와 merge에 대해 설명해주세요.
rebase 명령을 사용하여 한 분기에서 다른 분기로 편집 내용을 통합합니다. 병합 명령의 대안으로 사용됩니다. "병합" 명령의 대안입니다. 커밋의 연속적이고 정렬된 연속성을 제공하기 위해 커밋 기록을 다시 작성한다는 점에서 병합과 다릅니다.
고급 수준 Git 인터뷰 질문:
Q.27) 마지막 N 커밋을 단일 커밋으로 어떻게 스쿼시합니까?
마지막 N 커밋을 단일 커밋으로 스쿼시하는 두 가지 방법이 있습니다.
처음부터 새로운 커밋 메시지를 생성하려면 다음 명령을 사용할 수 있습니다.
git reset –soft HEAD~N &&git 커밋
기존 커밋 메시지를 연결하여 새 커밋 메시지를 간단히 편집하려면 해당 메시지를 가져와서 다음 명령을 사용하여 Git 커밋에 전달해야 합니다.
git reset –soft HEAD~N &&git commit –edit -m”$(git log –format=%B –reverse .HEAD@{N} )”
Q.28) Jenkins와 Git을 통합하는 단계는 무엇입니까?
1단계: Jenkins 버튼을 관리하려면 Jenkins 대시보드를 클릭해야 합니다.
2단계: 플러그인 관리 버튼을 클릭합니다.
3단계: 플러그인 페이지에서 GIT 플러그인을 선택해야 합니다. 다시 시작하지 않고 설치를 클릭합니다. 플러그인은 인터넷 속도에 따라 자동으로 다운로드됩니다.
Q.29) Git bisect가 무엇인지 설명하고 버그의 원인을 찾기 위해 어떻게 사용합니까?
Git bisect를 사용하면 바이너리 검색을 사용하여 버그를 유발한 커밋을 파악할 수 있습니다. Git bisect 명령은 git bisect <subcommand> <options>입니다.
이진 검색 알고리즘에서 이 명령은 처음에 버그를 일으킨 커밋을 찾습니다. Git bisect는 버그가 도입된 두 끝점 사이에서 커밋을 선택합니다. 좋은 커밋과 나쁜 커밋을 결정할 수 있습니다. 정확한 커밋을 찾을 때까지 계속 필터링합니다.

Q.30) git reflog에 대해 설명해주세요.
'reflog' 명령은 저장소 참조에 대해 수행된 모든 단일 편집을 추적하는 데 도움이 됩니다. 브랜치의 데이터 히스토리를 유지하고 로컬 또는 외부에서 생성된 브랜치에 대한 태그도 유지합니다 .
이 명령은 분기가 누락된 저장소에서 수행해야 합니다. 원격 저장소 상황의 경우 분기가 있는 프로그래머의 시스템에서 reflog 명령을 실행해야 합니다.
세계 최고의 대학에서 소프트웨어 공학 학위 를 취득하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
결론
Git Hub 인터뷰 질문이 꿈의 직업을 얻는 데 도움이 되길 바랍니다. 면접관이 가장 많이 묻는 Git 질문입니다. 면접에 좋은 결과 있기를 바랍니다!
