git init
: 저장소 생성
# 현재 디렉토리를 Git 저장소로 생성
# .git 폴더(숨김 폴더)가 생성됨
git init
git status
: 현재 상태 확인
git status
# 변경된 파일명이 빨간색으로 보일 경우 Working Directory 상태
# 변경된 파일명이 초록색으로 보일 경우 Staging Area 상태
# nothing to commit, working tree clean의 경우 변경 내용이 없음을 나타냄
git diff
: 파일의 변경내용 비교하기
# difftool을 사용하여 파일의 변경내용을 비교
git config --global -e
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
git difftool
git add
: 파일의 변경 사항을 index(Staging Area)에 추가
# 특정 파일을 Staging Area에 추가하기
git add <file>
# 변경 내용이 있는 모든 파일을 Staging Area에 추가하기
git add *
git add .
git restore <file>
: 작업 내용 취소
# Working Directory에 변경 내용을 취소할 경우(Tracked File)
git restore <file>
# Staging Area에 변경 내용을 Working Directory로 되돌릴 경우
git restore --staged <file>
git commit -m
: 파일의 변경 사항에 대한 이력 생성
# 마지막 커밋 메시지 수정
git commit --amend "수정할 커밋 메시지"
또는
git commit --amend
# VS Code에 COMMIT_EDITMSG 창에 수정할 커밋 메시지 입력 후 창 닫기
git rebase -i <hash>
: 특정 커밋 수정
# pick -> reword로 수정한 후 커밋 메시지 수정
reword <hash> "수정할 커밋 메시지"
git log
: 커밋 이력 확인
# Log를 한줄, 그래프 형태로 보기
git log --oneline
git log --oneline --graph
git checkout HEAD~
: 과거 커밋 이력 확인
# 이전 2개의 커밋으로 이동
git checkout HEAD~2
# 특정 커밋으로 이동
git checkout <hash>
# 마지막 커밋으로 복귀
git checkout main
git reset HEAD~
: 이전 상태로 복원(이력 제거)
# 이전 2개의 커밋으로 돌아가기 (--mixed : default)
# 커밋 기록은 삭제되지만 Working Directory에 변경 사항은 남김
git reset HEAD~2
# 커밋 기록은 삭제되지만 Working Directory와 Staging Area에 변경 사항은 남김
git reset --soft HEAD~2
# HEAD~2 커밋으로 복원되며 이후에 변경된 커밋 기록은 모두 삭제
git reset --hard HEAD~2
git branch
: 브랜치 생성 및 이동
# likelion이라는 브랜치를 생성
git branch likelion
# likelion이라는 브랜치로 이동
# checkout 명령이 여러 기능을 가지고 있기때문에 Git 2.23.0 버전에서는
# 브랜치 이동을 위한 기능으로 switch 명령이 추가 됨 (checkout, switch 모두 사용 가능)
git checkout likelion
git switch likelion
# main 브랜치로 복귀
git switch main
# likelion 브랜치를 main 브랜치로 병합
git merge likelion
# likelion 브랜치 삭제
git branch -d likelion
git reset HEAD~
: 이전 상태로 복원(이력 제거)
# 이전 2개의 커밋으로 돌아가기 (--mixed : default)
# 커밋 기록은 삭제되지만 Working Directory에 변경 사항은 남김
git reset HEAD~2
# 커밋 기록은 삭제되지만 Working Directory와 Staging Area에 변경 사항은 남김
git reset --soft HEAD~2
# HEAD~2 커밋으로 복원되며 이후에 변경된 커밋 기록은 모두 삭제
git reset --hard HEAD~2
git remote
: 리모트(Remote) 브랜치
# 리모트 브랜치 조회
git remote -v
# 리모트 브랜치 추가
git remote add origin <https://github.com/ID/REPOSITORY>
# 리모트 브랜치 삭제
git remote remove origin
git remote rm origin
git push
: 로컬의 변경 이력을 리모트로 전송
# 로컬의 main 브랜치의 변경 이력을 리모트 main 브랜치로 보내기
git push origin main
git pull
: 리모트의 내용을 로컬에 반영 (fetch + merge)