avatar
Published on

Git Cheat Sheet

Author
  • avatar
    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를 제거한다.

References