Git : 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다
git status
파일의 상태 확인하기
git log
git 히스토리 조회하기
option
--hard [commit log번호]
: 돌아가려는 이력이후의 모든 내용을 지워 버린다.--soft [commit log번호]
: 돌아가려 했던 이력으로 되돌아 갔지만 다시 커밋할 수 있는 상태로 남아있다(stage에 남아있다)--mixed
(기본) : 이후에 변경된 내용에 대해서는 남아있지만, 인덱스는 초기화된다git revert [commit log번호]
: commit을 유지하면서 내용을 복구한다git branch
로컬 branch 보기
git branch -a
로컬/원격 branch 보기
git branch [branch]
branch 만들기
git checkout [branch]
branch로 들어가기
git checkout -b [branch]
branch 병합
git checkout -d [new branch] [원격명/해당 branch]
새 branch에 해당 branch 적용
git merge [branch]
git log --graph --all --decorate
시각화된 작업내역
git rebase
branch 재배치
git branch -D [branch]
branch 지우기
git config -- global user.name '사용자 이름'
사용자 이름 등록
git config -- global user.email '사용자 email'
사용자 email 등록
git config --global -e
에디터 등록
git config --global alias.[변경 명령어] [기존 명령어]
명령어 변경
git config --h
정보 확인
git clone [url]
저장소 clone
git fetch
깃 변경사항
git pull [원격명] [branch]
git push [원격명] [branch]
git push -d [원격명] [branch]
원격의 branch 삭제
git diff
파일 비교하기,수정내용
git diff --staged
Staging Area에 넣은 파일 비교
Working Directory : 쉽게 시각화된 Tree
Index : 바로 다음에 커밋할 것
HEAD : 현재 브랜치를 가리키는 포인터
1. v1
2. v2
1. v1
2. v2
git history
1. HEAD 이동
git reset 9e5e6a4
2. Index 업데이트
3. working directory 업데이트
경로를 주고 Reset 하기
file.text를 Stage에서 제거한다
git add file.txt
과 반대되는 명령어
특정 커밋을 명시하면 Git은 “`HEAD에서 파일을 가져오는” 것이 아니라 그 커밋에서 파일을 가져온다.
합치기(Squash)
여러 commit을 하나로 합치기
git history
git reset --soft HEAD~2
명령을 실행하여 HEAD 포인터를 이전 커밋으로 되돌릴 수 있다
git commit
git checkout [branch]
경로 없음
reset --hard
명령과는 달리 git checkout
명령은 워킹 디렉토리를 안전하게 다룬다reset
명령은 HEAD가 가리키는 branch를 움직이지만 checkout
명령은 HEAD 자체를 다른 branch로 옮긴다경로 있음
git reset --hard [branch] file
와 같다
HEAD | INDEX | Working directory | WD safe? | |
---|---|---|---|---|
commit Level | ||||
reset --soft [commit] | REF | ❌ | ❌ | ⭕ |
reset [commit] | REF | ⭕ | ❌ | ⭕ |
reset --hard [commit] | REF | ⭕ | ⭕ | ❌ |
checkout [commit] | HEAD | ⭕ | ⭕ | ⭕ |
File Level | ||||
reset [commit] | ❌ | ⭕ | ❌ | ⭕ |
checkout [commit] | ❌ | ⭕ | ⭕ | ❌ |