git 명령어 모음

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)