TL; DR
$ git add README.md # README.md 파일 stage에 추가
$ git add -p # 변경사항 한 덩어리씩 추가
$ git commit -m "커밋 내용" # stage에 올린 파일 커밋하기
$ git commit --amend # stage파일 + 최상단 커밋
$ git push origin develop # origin develop에 push
$ git push --force origin develop # 강제 push
$ git log --oneline -- backend/ # 폴더 기준으로 커밋보기
$ git show 44a01b0 # 특정 커밋 내역 보기
$ git stash # 임시 저장
$ git reset 6c8e2ba # 6c8e2ba 까지 취소 (--hard O)
$ git revert 6c8e2ba # 6c8e2ba 을 취소하는 커밋 만들기
$ git fetch origin master # master 저장소 내역 가져오기
$ git rebase origin/master # master 저장소 내역으로 base 갱신하기
$ git rebase --continue # 충돌났을 때 해결하고 add, continue
$ git rebase --abort # rebase 취소하기
Git 설정
# GitHub 계정 이메일 주소 및 이름 커밋 내역 저자(author)정보로 찍힘
$ git config --global user.email "이메일"
$ git config --global user.name "이름"
# 설정 확인하기
$ git config --list
Branch
# branch 보기
$ git branch
# develop 브랜치 만들기
$ git branch -c develop
# develop 브랜치 삭제 (-D: 강제 삭제)
$ git branch -D develop
$ git bracnh -d develop
# develop 브랜치로 이동
$ git checkout develop
$ git switch develop
Add / Commit / Push
# 현재 파일 상태 확인하기
$ 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
'개발 > 기타' 카테고리의 다른 글
Postman 환경 변수 설정하기 (0) | 2024.10.07 |
---|---|
Redis 란? (0) | 2022.07.29 |
[Python] pip install 시 microsoft visual c++ 14.0 or greater is required 해결 (0) | 2022.05.11 |
Window에서 direnv 설치 (0) | 2022.05.03 |
[MongoDB] MongoDB 설치하기 (0) | 2022.03.14 |