

일반적으로는 type, subject만 적는다.
git add -p
git commit -v
2개의 파일을 수정하였다.
이러한 변화들을 한 번에 커밋하고 싶지 않다. git commit -am '커밋 메시지' (x)
hunk 별로 하나씩 add하고 싶다.
git add -p (p는 patch의 약자)


파일을 수정한 부분을 헝크(hunk) 라고 부른다.
예를 들어, leopards.yaml의 3~5를 hunk1, 14-15를 hunk2라고 하는데, hunk가 이러한 이유는, 바뀐 부분(3~5, 14-15) 사이에 바뀌지 않은 부분이 존재하기 때문.
'Stage this hunk [y,n,q,a,d,j,J,g,/,s,e,?]?'
'git status'를 입력해보자.


leopards.yaml, tigers.yaml이 '스테이지에 올라간 파일', '스테이지에 올라가지 않은 파일'에 모두 존재함을 볼 수 있다.
git commit -v
무엇을 커밋할 것인지를 보여준다. 'git diff --staged' + 'git commit'이라고 보면 됨
참고) add 이후 이번 커밋에 담길 변화가 무엇인지 확인할 때
git diff --staged
[작업 치워두기]
git stash
(git stash -m '메시지')
(git stash -p)
[치워둔 작업 가져오기]
git stash pop
1. tigers.yaml의 members에 'Stash' 추가, tomcats.yaml 파일 생성하였다.
(그리고 git add tomcats.yaml. stash를 하기 위해서는 tracking 상태여야 하니까)
git stash


무엇에 대한 stash인지 알 수 있도록, 메시지와 함께 stash하기
git stash -m '메시지'
2. 다른 일을 처리하고 난 후, 같은 브랜치 또는 다른 브랜치의 커밋 위에 다시 적용하기
git stash pop


3. 원하는 것만 stash하기
상황: leopards.yaml의 members에 'Stash2' 추가, jaguars.yaml의 members에 'Stash3' 추가하였다. 그리고 전자를 먼저 stash -> 후자를 그 다음에 stash하고 싶다.
ⅰ.
git stash -p
'Stash this hunk [y,n,q,a,d,e,?]?'
ⅱ.
n
y
git stash -m 'Stash3'

ⅲ. stash 목록보기
git stash list

ⅳ. stash 번호를 가지고, stash 다시 적용하기
git stash pop stash@{1}
또는
git stash apply stash@{1}
git stash drop stash@{1}
stash를 내 프로젝트에 적용 -> stash list에서 stash 삭제
apply, drop을 한 번에 하려면 pop
참고1) apply, drop, pop은 끝에 번호(EX. stash@{1})가 없으면, 치워둔 마지막 항목을 대상으로 한다.
참고2) pop을 하는데, 새로운 branch에 pop하기
git stash branch stash-branch
현재 작업 치워두기

메시지 입력 가능(git stash -m '메시지')
치워둔 작업 적용하기


'적용 후 삭제' 버튼을 선택하면, pop(apply+drop)하는 것
1. 커밋 메시지 수정하기
git commit --amend
또는
git commit --amend -m '커밋 메시지'


커밋 메시지를 '횻홍' -> 'Add a member to Panthers'로 수정하였다.
2. 커밋 수정하기
EX) pumas.yaml의 members에 'Poki' 추가하는 것을 까먹었다.
git add .
git commit --amend
또는
git commit -a --amend
또는
git commit -a --amend -m '커밋 메시지'

다음과 같은 커밋 히스토리가 있다.

수정 사항은 다음과 같다.
수정1. 커밋 메시지 변경
git rebase -i (수정하려고 하는 커밋 이전 커밋의 해시)
git rebase -i (25b1bb1c318d12456c48174d2eedea6fd0e7ee6b)
참고) '주인공 필살기 궁둥의 권 추가' 커밋의 해시임



수정2. 커밋 삭제
pick -> drop

수정3. 커밋 합치기
pick -> squash


커밋 메시지를 위와 같이 수정한다.
(기존에는 커밋이 2개니까 커밋 메시지가 2개였음)

수정4. 2개의 작업이 존재하는 하나의 커밋을, 두 커밋으로 나누기
pick -> edit
해당 커밋으로 돌아가서, 커밋을 직접 수정하겠다는 뜻
ⅰ. file-3.txt, file-4.txt 파일은 존재하지만 add하기 전 상태로 돌아간다.
git reset --mixed HEAD^
ⅱ. file-3.txt, file-4.txt 각각에 대해 커밋한다.
git add file-3.txt
git commit -m '캐릭터 귤맨 추가'
git add .
git commit -m '시작메뉴 디자인 변경'
git rebase --continue
