Tree
Head
현재 사용중인 브랜치
Index
Staging area , git add를 하게 되면 차지함
Working Directory
actual files
Reset
1.-soft
: 현재 브랜치와 HEAD 이동, 수정하고 git add를 한 상태로 돌아감
ex ) git reset --soft HEAD~
/ 이전 커밋으로 이동, 주로 커밋을 잘못했을 때(커밋이름 등) 사용
2. -mixed
: 현재 브랜치, HEAD, Index 업데이트( git add 한 것도 사라짐)
ex ) git reset [--mixed] HEAD~
3. -hard
: HEAD, Index + working directory까지 날려버림
Revert
커밋 히스토리 보존 (아예 커밋을 되돌리는 reset과 차이)
Tag
git tag <tagname><commit id> or <branch>
수정할 수 없음
Stash
git stash
working directory를 임시로 담고있음
local에서 수정한 내용을 담고 싶을 때
Rebase
히스토리를 한 줄 세우기 하고 싶을 때
(1) Batch
topic
브랜치를 master
브랜치에 붙이고 싶을 때
topic
브랜치로 체크아웃 후,
git rebase master
(2) Interactive
git rebase -i <commit>
C0 이후의 commit 어떻게 할 것인지 물어봄.
다음과 같이 대답할 수 있다 !
pick <commit>
; 아무것도 안하고 그냥 쓸래reword <commit> <새로 바꾸고 싶은 커밋명>
; 커밋 메시지를 바꾸고 싶어edit <commit>
; 잠시 멈춰서 해당 커밋을 수정, 이후 git add > git commit 하면 새로운 커밋이 들어옴, 다음 커밋 시작하려면 git rebase --continue
fixup <commit>
; squash <commit>
, fixup <commit>
; <commit>
과 이전 커밋 합치기 squash는 커밋명도 합쳐짐, fixup은 커밋내용까지 합쳐지지 않음Cherry Pick
해당 커밋만 뽑아서 가져옴
git cherry-pick <commit>
오픈소스SW개발 강의 필기