Refs
HEAD^ # HEAD 의 1개 이전 commit
HEAD^^ # HEAD 의 2개 이전 commit
HEAD~3 # HEAD 의 3개 이전 commit
HEAD~4 # HEAD 의 4개 이전 commit
Branches
# 브랜치 생성
git checkout -b $branchname
git push origin $branchname --set-upstream
# 원격 브랜치 가져오기
git fetch origin
git checkout --track origin/$branchname
# 원격 저장소에서 삭제된 브랜치 정보를 로컬 저장소에 적용
git remote prune origin
# 병합된 브랜치 리스트
git branch -a --merged
# 원격 저장소의 브랜치 삭제
git push origin :$branchname
# 이전 브랜치로 이동
git checkout -
Collaboration
# 원격 저장소의 master 브랜치 기준으로 로컬 저장소를 rebase
git pull --rebase upstream master
# 여러 개의 commit 을 한개로 합치기
git rebase -i $commit_ref
Submodules
# 서브 모듈을 생성하기 .gitmodules 생김
git submodule init
# 서브 모듈을 복제하고 최신화
git submodule update --init --recursive
# .gitmodules 를 업데이트
git submodule sync
Diff
git add 하기 전에 변경점 확인하기
git diff
git add 후에 변경점 확인하기
git diff --cached
이번에 커밋한 변경점 확인하기
git diff HEAD^..HEAD
커밋끼리 비교하기
git diff 이전SHA..이후SHA
특정커밋의 변경점 확인하기
git diff 확인하고싶은SHA^..확인하고싶은SHA
브랜치끼리 비교하기
git diff BRANCH-A..BRANCH-B
git pull 전에 원격저장소와 변경점 확인하기
git diff HEAD.. REMOTE-NAME/BRANCH-NAME
git push 전에 원격저장소와 변경점 확인하기
git diff REMOTE-NAME/BRANCH-NAME.. HEAD
얼마나 변경되었는지 확인
git diff --stat
변경된 파일명만 확인
git diff --name-only
비교시에 개행이나 공백 무시
git diff -w
단어 단위로 비교하기
git diff --color-words
Log options
--oneline
e11e9f9 Commit message here
--decorate
shows "(origin/master)"
--graph
shows graph lines
--date=relative
"2 hours ago"
Misc
Misc
# get current sha
git show-ref HEAD -s
# show single commit info
git log -1 f5a960b5
Short log
$ git shortlog
$ git shortlog HEAD~10.. # 최근 10개 commit log
commit message 검색
git log --grep="fixes things" # search in commit messages
git log -S"window.alert" # search in code
git log -G"foo.*" # search in code (regex)