- Published on
Git Cheat Sheet
- Author
- Name
- yceffort
여기저기 잘 만들어져 있는 Git Cheat Sheet를 모아서 한글로 번역해 보았다. 작성시 []
는 제거해야 한다.
Table of Contents
SETUP
git config --global user.name "[firstname lastname]"
: git에서 사용할 글로벌 이름을 설정한다.git config --global user.email "[valid-email]"
: git에서 사용할 글로벌 이메일을 설정한다.git config --global color.ui auto
: git 리뷰를 쉽게할 수 있도록 커맨드라인에 자동으로 색깔을 칠해준다.
SETUP & INIT
git init
: git repository 초기화git clone [url]
: URL을 통해서 git repository를 클론한다.
STAGE & SNAPSHOT
git status
: 작업중인 디렉토리에서 변경된 파일 목록을 보여준다.git add [file]
: 다음 커밋에 추가될 파일 (스테이징할)을 추가한다.git reset [file]
: 작업중인 디렉토리에서 스테이징 된 파일을 다시 unstage 상태로 되돌린다.git reset --hard [file]
: 스테이징 영역과 작업 디렉토리를 가장 최근 커밋과 일치하도록 리셋하고, 작업 디렉토리의 모든 변경사항을 엎어버린다.git reset [commit]
: 현재 브랜치를 커밋ID 쪽으로 되돌리고, 모든 스테이징되어 있는 변경사항을 되돌리지만, 작업중인 내용은 되돌리지 않는다.git reset --hard [commit]
: 스테이징영역과 작업중인 영역 모두를 리셋해 버린다. 커밋되지 않는 변경내역은 모두 날라가고, commit 이후의 내용도 모두 날라간다.git diff
: 스테이징되지 않은 파일들 중에서 diff를 확인한다.git diff --staged
: 스테이징된 파일들 중에서 diff를 확인한다.git commit -m "[message]"
: 스테이징된 파일을 메시지와 함께 커밋한다.git commit --amend
: 가장 마지막 커밋을 현재 스테이징되어 있는 내용가 마지막 커밋을 병합한다. 스테이징과 별도로 사용한다면, 단순히 커밋 메시지를 변경하는 용도로도 사용할 수 있다.
BRANCH & MERGE
git branch
: 브랜치 목록을 보여준다.*
이 떠있는 브랜치는 현재 활성화된 브랜치를 의미한다.git branch [branch-name]
: 현재 커밋을 기준으로 새로운 브랜치를 만든다.git checkout [branch-name]
: 다른 브랜치로 변경 한다음, 해당 내용을 작업중인 브랜치로 가져온다.git merge [branch-name]
: 특정 브랜치의 작업 내용을 현재 브랜치와 병합한다.
INSPECT & COMPARE
git log
: 현재 브랜치의 모든 커밋 히스토리를 보여준다.git log [branchB]..[branchA]
: 브랜치A의 커밋중 브랜치B에 없는 히스토리를 보여준다.git log --follow [file]
: 파일명 변경까지 포함해서 해당 파일의 커밋을 보여준다.git diff [branchB]...[branchA]
: 브랜치A를 기준으로 브랜치B와 다른 내용을 보여준다.git show [SHA]
: 사람이 읽을 수 있는 형태로 모든 오브젝트를 보여준다.
TRACKING PATH CHANGES
git rm [file]
: 해당 파일을 삭제하고, 스테이지에서도 이를 제거한다.git mv [existing-path] [new-path]
: 파일 위치를 변경하고 스테이지에 이를 기록한다.git log --stat -M
: 경로가 이동한 모든 커밋 로그를 보여준다.
IGNORING PATTERNS
logs/
*.notes
pattern*/
git이 무시하기를 원하는 파일들의 패턴을 .gitignore
에 기록해 둔다.
git config --global core.excludesfile [file]
: 시스템 레벨에서 모든 레파지토리에서 무시할 파일을 설정한다.git remote add [alias] [url]
: git URL을 별칭과 함께 추가한다.git fetch [alias]
: Git remote에서 모든 브랜치를 패치한다.git merge [alias]/[branch]
: 현재 브랜치에다가 리모트 브랜치의 최신내용을 병합한다.git push [alias] [branch]
: 로컬 브랜치 커밋을 리모트 레파지토리의 브랜치에 전송한다.git pull
: 리모트 브랜치에서 추적하고 있는 모든 커밋을 패치하고 병합하여 최신화 한다.
REWRITE HISTORY
git rebase [branch]
: 현재 브랜치보다 앞서있는 모든 변경 내용 (커밋)을 땡겨와서 적용한다.git reset --hard [commit]
: 스테이징 영역에 있는 것을 모두 클리어하고, 특정 커밋 버전으로 모든 작업내용을 덮어써버린다.
TEMPORARY COMMITS
git stash
: 현재 수정되거나 스테이징되어 있는 변경사항을 모두 저장한다.git stash list
: stack 순서로 되어 있는 모든 stash 목록을 보여준다.git stash pop
: stash stack 최상단에 있는 변경사항을 적용한다.git stash drop
: stash stack 최상단에 stash를 제거한다.