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 --continuefixup <commit> ; squash <commit> , fixup <commit> ; <commit>과 이전 커밋 합치기 squash는 커밋명도 합쳐짐, fixup은 커밋내용까지 합쳐지지 않음Cherry Pick
해당 커밋만 뽑아서 가져옴
git cherry-pick <commit>
오픈소스SW개발 강의 필기