매번 찾아보게 되는 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