Git 최초 설정
Git 설치하고 나면 Git의 사용 환경을 적절하게 설정해줘야합니다.
Git 사용자 ID
git config --global user.name "seulbinim"
Git 사용자 Email
git config --global user.email seulbinm@gmail.com
Git Default Editor 설정 (Visual Studio Code)
git config --global core.editor "code --wait"
windows와 Mac OS의 공백문자(줄바꿈) (Carriage return, Lind Feed)
windows 환경
git config --global core.autocrlf true
Mac OS 환경
git config --global core.autocrlf input
또한 언제든지 설정 값을 'git config'라는 도구로 확인하고 변경할 수 있습ㅣ다.
Git Config 설정 확인하기
터미널에서 확인
git config --list
기본 에디터에서 확인
git config --global -e
Git이 관리하는 저장소의 기본 브랜치가 master일 경우 main으로 변경할 수 있습니다.
git init 명령으로 생성된 저장소의 기본 브랜치가 master일 때 main으로 브랜치명을 변경
git branch -m main
git init 명령으로 Git 저장소를 초기화 시킬 때 브랜치가 main이 되도록 설정
git init -b main
로컬 환경에서 git init 명령을 통해 Git 저장소를 초기화하면 기본 브랜치가 main이 되도록 설정
git config --global init.defaultBranch main
Git command
- 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
변경 내용이 있는 모든 파일을 Staging Area에 추가하기
git add *
git add .
- git restore : 작업 내용 취소
Working Directory에 변경 내용을 취소할 경우(Tracked file)
git restore
Staging Area에 변경 내용을 Working Directory로 되돌릴 경우
git restore --staged
- git commit -m : 파일의 변경 사항에 대한 이력 생성
마지막 커밋 메시지 수정
git commit --amend "수정할 커밋 메시지"
또는
git commit --amend
VS Code에 COMMIT_EDITMSG 창에 수정할 커밋 메시지 입력 후 창 닫기
- git rebase -i : 특정 커밋 수정
pick -> reword로 수정한 후 커밋 메시지 수정
reword "수정할 커밋 메시지"
- git log : 커밋 이력 확인
Log를 한줄, 그래프 형태로 보기
git log --oneline
git log --oneline --graph
- git checkout HEAD~ : 과거 커밋 이력 확인
이전 2개의 커밋으로 이동
git checkout HEAD~2
특정 커밋으로 이동
git checkout
마지막 커밋으로 복귀
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)
리모트 main 브랜치의 변경 이력을 로컬 main 브랜치로 가져오기
git pull origin main
Git Config 설정
인증 절차가 생략
git config credential.helper store
15분 동안 인증 유예
git config credential.helper cache
timeout 옵션을 사용하여 인증 유예시간 지정 가능 (3600 = 1시간)
git config credential.helper 'cache --timeout=3600'
Github 폴더 및 파일명 대소문자 구분 (!주의 필요)
git config core.ignorecase false