Git 용어 정리
1. Repository (저장소)
Git 저장소는 프로젝트 파일과 해당 파일의 변경 이력을 저장하는 공간입니다.
- 로컬 저장소(Local Repository): 사용자 컴퓨터의 개인 저장소.
- 원격 저장소(Remote Repository): 온라인에 호스팅된 저장소. 예: GitHub, GitLab.
2. Working Directory (작업 디렉토리, 워킹트리)
Git 저장소의 파일이 실제로 작업되는 디렉토리입니다. 파일을 수정하거나 새로 추가할 때 이 공간에서 작업이 이루어집니다.
2.1 상태:
- Untracked: Git이 아직 추적하지 않는 새 파일.
- Modified: 추적 중인 파일이 변경되었으나 스테이징되지 않은 상태.
3. Staging Area (스테이징 영역)
커밋할 파일을 임시로 보관하는 공간으로, 변경된 파일을 추가(git add)하여 커밋 준비를 합니다.
4. Commit (커밋)
Git에서 변경된 파일의 상태를 저장하는 작업으로, 특정 시점의 스냅샷을 기록합니다.
- 커밋 메시지를 통해 작업 내용을 설명해야 합니다.
- 스냅샷: 커밋은 특정 시점의 파일 상태를 저장하며, Git은 변경된 파일만을 저장하여 효율적으로 관리합니다. 과거 상태로 복구하거나 변경 내역을 추적할 수 있습니다.
5. Snapshot (스냅샷)
Git에서 스냅샷(Snapshot)은 특정 시점의 프로젝트 상태를 저장한 것으로, 파일의 변경 내역을 기록하고 추적할 수 있도록 도와줍니다.
5.1 주요 특징:
- Git은 변경된 파일만을 저장하여 저장 공간을 효율적으로 사용합니다.
- 스냅샷을 통해 특정 시점의 프로젝트 상태로 복구하거나 비교할 수 있습니다.
5.2 사용 사례:
- 커밋: 각 커밋은 프로젝트의 스냅샷을 생성합니다. 변경된 파일의 상태를 저장하여 추적할 수 있습니다.
- 비교: 이전 커밋과 현재 커밋을 비교하여 변경 내역을 확인합니다.
5.3 명령어:
- 커밋을 통해 스냅샷 생성:
git commit -m "커밋 메시지"
- 커밋 간의 차이 확인:
git diff <커밋 해시>
6. Branch (브랜치)
Git에서 브랜치는 독립적으로 작업할 수 있는 별도의 작업 공간입니다.
- 기본 브랜치: 일반적으로
main 브랜치.
- 새 브랜치: 새로운 기능 개발이나 테스트를 위해 생성된 브랜치.
6.1 주요 명령어:
- 브랜치 생성:
git branch <브랜치명>
- 브랜치 전환:
git checkout <브랜치명>
7. Merge (병합)
두 브랜치의 작업 내역을 하나로 합치는 작업입니다.
- Fast-forward 병합: 충돌 없이 브랜치를 단순히 이동.
- Conflict (충돌): 병합 시 동일 파일의 수정 사항이 겹치는 경우 발생. 수동으로 해결해야 합니다.
8. Pull Request (PR)
원격 저장소에서 브랜치를 병합 요청할 때 사용됩니다. 주로 코드 리뷰와 협업 과정에서 사용됩니다.
9. Remote Repository (원격 저장소)
GitHub, GitLab과 같은 클라우드 기반 저장소. 협업과 백업을 위해 로컬 저장소와 동기화합니다.
9.1 주요 명령어:
- 원격 저장소 추가:
git remote add origin <URL>
- 변경 사항 전송:
git push
- 변경 사항 가져오기:
git pull
10. Fetch (페치)
원격 저장소의 변경 사항을 로컬로 가져오지만, 병합하지 않습니다.
11. Clone (클론)
원격 저장소의 내용을 복사하여 로컬 저장소로 가져옵니다. 새로운 개발 환경에서 프로젝트를 시작할 때 사용합니다.
12. Rebase (리베이스)
브랜치의 기반(base)을 다른 브랜치로 변경하는 작업입니다. 병합과 비슷하지만, 커밋 이력을 재구성하는 차이가 있습니다.
- 주로 깔끔한 커밋 히스토리를 유지할 때 사용됩니다.
13. Log (로그)
저장소의 커밋 이력을 확인하는 명령어입니다.
14. HEAD
HEAD는 현재 작업 중인 브랜치나 커밋을 가리키는 포인터입니다.
- Detached HEAD: 특정 커밋에 임시로 위치한 상태. 이 상태에서는 새로운 커밋이 현재 브랜치와 연결되지 않습니다.
- HEAD는 보통 브랜치를 가리키며, 커밋 작업이 이루어지면 HEAD가 자동으로 최신 커밋을 가리킵니다.
15. Checkout (체크아웃)
git checkout 명령어는 브랜치를 전환하거나 특정 커밋, 파일의 상태를 복원하는 데 사용됩니다.
15.1 주요 명령어:
- 브랜치 전환:
git checkout <브랜치명>
- 특정 커밋으로 이동:
git checkout <커밋 해시>
- 파일 복원:
git checkout -- <파일명>
git switch 명령어를 브랜치 전환 시 사용하기도 합니다.
16. Tag (태그)
프로젝트의 특정 시점을 기록하는 데 사용되는 마커입니다. 일반적으로 릴리스 버전을 표시할 때 사용됩니다.
17. Conflict (충돌)
병합 또는 리베이스 과정에서 동일한 파일이 두 곳에서 다르게 수정된 경우 발생합니다. 충돌을 해결한 후 다시 커밋해야 합니다.