한 단위의 작업은 커밋(버전) 하나에 담기는것이 좋음
커밋 메세지 작성 방식
예시
type: subject
body (optional)
...
...
...
footer (optional)
feat: 압축파일 미리보기 기능 추가
사용자의 편의를 위해 압축을 풀기 전에
다음과 같이 압축파일 미리보기를 할 수 있도록 함
- 마우스 오른쪽 클릭
- 윈도우 탐색기 또는 맥 파인더의 미리보기 창
Closes #125
각 커밋 메세지에는 해당 작업이 대략 어느 부류에 속하는 지 바로 알 수 있도록 앞에
이 중 하나를 추가함
타입과 서브젝트 작성 후 다음에 한줄을 비워 바디를 작성하고, 한 줄 비우고 footer 작성
-> 특정 이슈에 대한 해결 커밋일 때 해당 이슈의 번호를 적을 때 Footer에 작성
앞에 Gitmoji를 사용하기도 함(타입 처럼 활용됨)
두개의 파일을 수정하였음
git에서 hunk
는 파일에서 수정 된 섹션을 의미
-> git은 파일을 작은 조각으로 나누어 "hunk"라고 부름
-> 이렇게 하면 파일을 수정한 내용을 자세히 살펴볼 수 있게 됨
예를 들어, 파일을 수정한 후 git diff
명령어를 사용해 수정 내용을 볼 경우 git은 파일의 수정 사항을 hunk의 시리즈로 보여줌
-> 각 hunk는 파일에 추가된, 수정된 또는 삭제된 줄과 그 주변의 일부 컨텍스트 줄을 포함한 수정 사항을 보여줌
git add -p
명령어를 사용하면 hunk별로 수정 사항을 상태 저장(stage)
할 수 있다
-> 이는 큰 수정 사항을 작은, 집중된 커밋으로 나누고 싶을 때나 커밋하기 전에 수정 사항을 자세히 살펴보고 싶을 때 유용
이러한 형식으로 하나의 hunk를 보여줌
y, n을 통해 각 hunk들을 스테이징
특정 헝크는 staging 된 반면 특정 헝크는 스테이징 되지 않은 것을 볼 수 있다
변경 사항을 확인하고 커밋하기 위해
git commit -v
아까 n으로 스테이징 하지 않은 것을 따른 버전으로 커밋 가능
예를들어 항상 어떤 작업을 수행중에, 급하게 어떠한 오류를 수정해 달라거나 뭘 좀 처리해달라고 할 때 커밋도 못하고 난감
-> 이때 하던 것들을 잠시 깃의 따른 공간에 치워두는 기능이 stash
tigers 수정, 새로 만든 tomcats는 add
이후 git stash를 했을 때 수정 사항이 없어지고, 새로 만든 파일이 지워 짐
stash라는 공간에 작업 내용이 저장되어 있음
원하는 시점에 stash 적용하기 위해(다른 브랜치에서도 적용가능)
git stash pop
원하는 것만 stash 하기
우선 두 파일에 stash 멤버들 추가
git stash -p
이 명령어를 통해 Stash2 멤버가 추가된 내용만 stash로 설정(y/n)
Stash3 멤버가 추가된 내용은
메세지와 함께 Stash
git stash list를 통해 목록 확인
이 Stash들을 프로젝트에 다시 적용하기 하기
-> 커밋하는 것 X, 수정된 상태로만 돌려두는 것
git stash apply stash@{1}
git stash drop stash@{1}
이러한 반영 및 stash 삭제 작업을 동시에 하는 기능이 pop
git stash pop
새로운 브랜치를 만들고 거기에 stash 내용을 pop 할려면
ex) git stash branch stash-branch
커밋 메세지 수정하기
git commit --amend
커밋 변화 추가
-> 특정 커밋에 적용하지 못한 내용을 과거 커밋에 포함 시키기
메세지 변경 이후 적용하지 못한 내용들이 과거 커밋에 적용된것을 볼 수 있음
횻홍 커밋 메세지 변경, 뻘짓 커밋 제거(revert가 아닌 존재 자체 제거)
추가 중, 추가 완료 커밋 하나로 합치기
캐릭터 추가, 디자인 변경 커밋 2개로 나누기
수정을 위해
git rebase -i (수정 할려는 대상 바로 이전 커밋)
git rebase -i + 주인공 필살기 커밋 코드 (입력)
위 vim에서 pick ~ 흇훙을 r ~ 흇훙
으로 체인지
-> 커밋 메세지를 수정하는 화면 나옴(bug fix로 체인지)
이후 뻘짓 커밋 지우기 위해 bug fix 로 rebase -i
스쿼시 화면에서 하나로 통합할 커밋 메세지 설정
이후 캐릭터 추가, 디자인 변경 작업이 커밋된 상태로 되돌아 가있음
git reset --mixed
명령은 Git 저장소의 상태를 이전 커밋 상태로 되돌림
-> 이 명령을 사용하면 커밋을 취소할 수 있지만, 워킹 디렉토리(working directory)에 있는 파일은 수정 사항을 유지
git reset HEAD^ -> mixed
git add file-3.txt
git commit -m '캐릭터 귤맨 추가'
git add file-4.txt
git commit -m '시작 메뉴디자인 변경'
git rebase --continue
깃은 모든 커밋들이 순차적으로 저장
-> 그런데 만약 특정 커밋(ex: 성능개선)의 과거 커밋들이 변경된다면 특정 커밋 또한 다른 커밋이 되는 것
-> 따라서 커밋을 어느 시점에서 딱 자른 후, 그 위에 커밋들을 새로 다 작성한 후 rebase로 갖다 붙이는 느낌
좋은 예제 감사합니다~