낙서장이자 오답 노트이자 컨닝 페이퍼
Git을 공부해보자: 프로답게 커밋 관리하기(hunk별 관리, stash, 커밋수정, 과거 커밋 관리) 본문
인프런에서 "제대로 파는 Git & GitHub - by 얄코"를 보고 정리한 내용입니다!
hunk별 스테이징
hunk별 스테이징 진행 (변화 하나하나를 hunk라고 부름)
git add -p
- 옵션 설명을 보려면 ?입력 후 엔터
- y 또는 n로 각 헝크 선택
- 일부만 스테이징하고 진행해보기
- git status로 확인


변경사항 확인하고 커밋
git commit -v
- j, k로 스크롤하며 변경 사항 확인
- git diff --staged와 비교 (git commit -v는 커밋과 git diff --staged를 같이 하는 것이라고 보면 됨)

커밋하기 애매한 변화 stash
stash를 사용하면 현재 진행 중인 변경사항을 다른 공간에 치워둘 수 있다.
1. 변경사항 만들기
- 새 파일은 add 해서 트래킹 해줘야 stash 가능
2. 아래 명령어로 치워두기
git stash


3. 원하는 시점, 브랜치에 다시 적용
git stash pop

4. 원하는 것만 stash
- 변경 사항 여러 개 추가
- 아래 명령어로 원하는 것을 선택하여 stash
git stash -p

5. 메시지와 함께 stash
git stash -m 'Add Stash3'
6. stash 목록 보기
git stash list

- 리스트상의 번호로 apply, drop, pop 가능
- ex) git stash apply stash@{1}
7. 새 브랜치에 pop
git stash branch (브랜치명)

stash 사용법 정리
| 명령어 | 설명 | 비고 |
| git stash | 현 작업들 치워두기 | 끝에 save 생략 |
| git stash apply | 치워둔 마지막 항목(번호 없을 시) 적용 | 끝에 번호로 항목 지정 가능 |
| git stash drop | 치워둔 마지막 항목(번호 없을 시) 삭제 | 끝에 번호로 항목 지정 가능 |
| git stash pop | 치워둔 마지막 항목(번호 없을 시) 적용 및 삭제 | apply + drop |
| git stash branch (브랜치명) | 새 브랜치를 생성하여 pop | 충돌사항이 있는 상황 등에 유용 |
| git stash clear | 치워둔 모든 항목들 비우기 |
마지막 커밋 수정
1. 커밋 메시지 변경
git commit --amend
2. 커밋에 변화 추가
- 변경 사항 추가하고 스테이지
- git commit --amend로 마지막 커밋에 포함
- 커밋 메시지 변경
3. 커밋 메시지 한 줄로 변경
git commit --amend -m 'Add members to Panthers and Pumas'
과거의 커밋 수정, 삭제, 병합, 분할
과거 커밋 내역을 다양한 방법으로 수정 가능하다 (새로운 브랜치를 만들어 붙이는 방식이기 때문에 rebase 사용).
git rebase -i (대상 바로 이전 커밋)
| 명령어 | 설명 |
| p, pick | 커밋 그대로 두기 |
| r, reword | 커밋 메시지 변경 |
| e, edit | 수정을 위해 정지 |
| d, drop | 커밋 삭제 |
| s, squash | 이전 커미세 합치기 |
커밋 수정해 보기

커밋 메시지 변경
1. 변경할 커밋의 바로 이전 커밋으로 rebase -i
git rebase -i 25b1bb1c318d12456c48174d2eedea6fd
2. 명령어 r을 사용하여 메시지 변경


커밋 삭제
1. 삭제할 커밋의 바로 이전 커밋으로 rebase -i
2. 명령어 d를 사용하여 삭제


3. 커밋 합치기
1. 합칠 커밋의 바로 이전 커밋으로 rebase -i
2. 더 최근에 생긴 커밋에 명령어 s 사용

3. 커밋 메시지 하나로 합치기(하나만 쓰면 됨)



4. 커밋 나누기
1. 나눌 커밋의 바로 이전 커밋으로 rebase -i
2. 명령어 e를 사용하여 나누기

3. 커밋 한 단계 되돌리기
git reset HEAD^

4. 커밋 나누어 다시 하기

5. rebase 완료하기
git rebase --continue


'git & github' 카테고리의 다른 글
| Git을 공부해보자: 태그 (1) | 2023.11.29 |
|---|---|
| Git을 공부해보자: 취소, 되돌리기 깊이 알기 (1) | 2023.11.29 |
| Git을 공부해보자: Git config (0) | 2023.11.28 |
| Git을 공부해보자: HEAD (0) | 2023.11.20 |
| Git을 공부해보자: Git의 3가지 공간 & add, commit 취소하기 (0) | 2023.11.16 |