매번 찾아보게 되는 Git 명령어를 상황별로 추려 정리했다. 필요할 때 바로 꺼내 쓰는 개인용 치트시트다.

1. 초기 설정.

# 사용자 이름과 이메일을 등록한다 (커밋 작성자로 기록된다)
git config --global user.name "이름"
git config --global user.email "메일주소"

# 기본 브랜치 이름을 main으로 설정한다
git config --global init.defaultBranch main

# 현재 설정 전체를 확인한다
git config --list

2. 저장소 시작.

# 현재 폴더를 새 저장소로 초기화한다
git init

# 원격 저장소를 복제한다
git clone <url>

# 히스토리를 최소화해 얕게 복제한다
git clone --depth 1 <url>

3. 상태 확인.

# 작업 트리 상태를 확인한다
git status

# 한 줄로 간결하게 확인한다
git status -s

# 스테이징 전 변경 사항을 비교한다
git diff

# 스테이징된 변경 사항을 비교한다
git diff --staged

4. 스테이징과 커밋.

# 특정 파일을 스테이징한다
git add <파일>

# 변경 사항 전체를 스테이징한다
git add .

# 커밋을 생성한다
git commit -m "메시지"

# 스테이징과 커밋을 한 번에 한다 (추적 중인 파일 한정)
git commit -am "메시지"

# 직전 커밋에 현재 변경을 더하고 메시지도 수정한다
git commit --amend

# 직전 커밋에 현재 변경만 더한다 (메시지는 그대로 둔다)
git commit --amend --no-edit

5. 브랜치.

# 브랜치 목록을 확인한다
git branch

# 원격 포함 전체 브랜치를 확인한다
git branch -a

# 브랜치를 생성하고 이동한다
git switch -c <브랜치>

# 기존 브랜치로 이동한다
git switch <브랜치>

# 브랜치를 삭제한다
git branch -d <브랜치>

# 병합하지 않은 브랜치를 강제로 삭제한다
git branch -D <브랜치>

6. 병합과 리베이스.

# 현재 브랜치에 다른 브랜치를 병합한다
git merge <브랜치>

# 다른 브랜치의 여러 커밋을 하나로 합쳐 가져온다 (스테이징만 되므로 커밋이 필요하다)
git merge --squash <브랜치>
git commit -m "메시지"

# 커밋 히스토리를 한 줄로 재정렬하며 병합한다
git rebase <브랜치>

# 충돌을 해결한 뒤 리베이스를 계속한다
git rebase --continue

# 리베이스를 중단하고 원래대로 되돌린다
git rebase --abort

7. 원격 저장소.

# 등록된 원격을 확인한다
git remote -v

# 원격을 추가한다
git remote add origin <url>

# 원격 변경을 병합 없이 내려받는다
git fetch

# 원격 변경을 내려받아 병합한다
git pull

# 커밋을 올린다
git push

# 새 브랜치를 원격에 처음 올리며 추적을 설정한다 (이후로는 git push, git pull만 써도 된다)
git push -u origin <브랜치>

8. 되돌리기.

# 작업 트리의 파일 변경을 취소한다 (수정을 폐기한다)
git restore <파일>

# 스테이징만 취소한다 (변경은 유지한다)
git restore --staged <파일>

# 직전 커밋을 취소하되 변경은 스테이징 상태로 유지한다
git reset --soft HEAD~1

# 직전 커밋과 변경을 모두 폐기한다 (주의한다)
git reset --hard HEAD~1

# 특정 커밋을 취소하는 새 커밋을 생성한다 (히스토리를 보존한다)
git revert <커밋>

9. 임시 저장.

# 작업 중인 변경을 임시로 치워둔다
git stash

# 추적하지 않는 파일까지 포함한다
git stash -u

# 저장 목록을 확인한다
git stash list

# 가장 최근 저장을 복원하고 목록에서 제거한다
git stash pop

# 복원하되 목록에는 남겨둔다
git stash apply

10. 히스토리 확인.

# 커밋 히스토리를 확인한다
git log

# 한 줄 요약으로 확인한다
git log --oneline

# 브랜치 그래프까지 함께 확인한다
git log --oneline --graph --all

# 특정 파일의 각 줄을 누가 언제 바꿨는지 확인한다
git blame <파일>

11. 태그.

# 태그 목록을 확인한다
git tag

# 주석 있는 태그를 생성한다
git tag -a v1.0.0 -m "메시지"

# 태그를 원격에 올린다
git push origin v1.0.0

# 모든 태그를 원격에 올린다
git push --tags

* 참조
Git 공식 문서 (git-scm.com/doc)