# 현재 파일 상태 확인하기
$ git status
# 수정한 내용 확인하기
$ git diff
# README.md 파일 stage에 추가
$ git add README.md
# 변경사항 한 덩어리씩 추가
$ git add -p
# 현재 디렉토리에 있는 모든 파일 추가
$ git add .
# stage에 올린 파일 커밋하기
$ git commit -m "커밋 내용"
# stage에 있는 변경사항을 최상단 커밋에 합치기
$ git commit --amend
# origin develop에 push
$ git push origin develop
# remote 저장소를 local 저장소 커밋으로 강제 push하기
$ git push --force origin develop
Log / Shortlog / Show
# 깃 커밋 로그 보기
$ git log
# 커밋 diff 보기
$ git log -p
# 깃 커밋 로그 한 줄로 보기 (wc -l 로 라인 수 = 커밋 수 세기 O)
$ git log --oneline
$ git log --oneline | wc -l
# 로그 최신순부터 10개 보기
$ git log --oneline -10
# 날짜 기준 으로 보기
$ git log --oneline --after=2021-10-01 --before=2021-10-10
# 옛날 커밋부터 보기
$ git log --oneline --reverse
# 병합 커밋 제외하고 보기
$ git log --oneline --no-merges
# 특정 폴더(backend/)를 기준으로 보기 (-- 띄어쓰기 해야함)
$ git log --oneline -- backend/
# 사용자별 커밋 개수 세기 & line number 붙이기
$ git shortlog -sn
$ git shortlog -sn | nl
# 특정 커밋 내역 보기
$ git show 44a01b0
# 특정 커밋에서 수정한 파일 확인하기 & 개수 세기
$ git show 6c8e2ba | grep "diff --git"
$ git show 6c8e2ba | grep "diff --git" | wc -l
Stash / Reset / Revert
# 임시 저정하기 & 복구
$ git stash
$ git stash pop
# add 명령 취소 (stage에 올라간 파일 내리기)
$ git reset
# 올라간 파일 내리면서 변경도 삭제하기 (최신 커밋으로 돌아가기)
$ git reset --hard
# 변경 사항들 stage에 올리면서 특정 커밋 ID 상태로 가기
# --hard는 변경 사항들 삭제하고 가기
$ git reset 6c8e2ba
$ git reset --hard 6c8e2ba
# 특정 커밋 삭제하기 (삭제하는 커밋찍기)
$ git revert 6c8e2ba
# 파일 수정 내용 삭제하기 (최신 커밋으로 돌아가기)
$ git checkout -- README.md
$ git restore README.md
Rebase
# base commit을 새로 갱신하기
# develop 브랜치에서 작업하는데 master 브랜치에 커밋이 찍혔다고 가정하자.
# develop 브랜치의 base commit을 master 브랜치 것으로 바꿔야한다.
# 아래로 develop 브랜치에서 하는 커맨드 !
# origin master 브랜치 내역을 가져온다 (pull = fetch + merge)
$ git fetch origin master
# rebase 시작하기
$ git rebase origin/master
# 같은 부분을 수정했어서 충돌이 났으면, 해결하라고 한다.
# 충돌을 해결한 내역을 stage에 올리고(커밋X) rebase를 마저 진행하면 끝
$ git add .
$ git rebase --continue
# rebase 그만두기
$ git rebase --abort
# 중간에 커밋 끼워넣거나 지우기 등
# root 부터 커밋 내역 불러오기 => 그 중 이동할 곳 edit으로 변경
$ git rebase -i --root
# add/commit(끼워넣기) reset(지우기) --amend(커밋 합치기) 등 하기
# rebase 복구하기. 충돌나면 해결한 후 add . 한 후 continue
$ git rebase --continue