0원으로 현업 환경을 설정해보자! [번외편] 히스토리 꾸미기
이 포스팅은 "실제 현업의 환경을 설정해보자!"의 Series 중 일부입니다.
2 0원으로 현업환경을 설정해보자! Sourcetree
3. 0원으로 현업환경을 설정해보자! Beyond Compare
4. 0원으로 현업환경을 설정해보자! Git Flow(Sourcetree)
5. 0원으로 현업 환경을 설정해보자! Github Pull Request(코드 리뷰)
6. 0원으로 현업환경을 설정해보자! [번외편] 히스토리 꾸미기
Git Book - 히스토리 단장하기의 내용을 바탕으로 정리하였습니다.
원문은 여기를 참조해주세요.
마지막 커밋을 수정하기
amend 는 마지막 커밋내용을 수정하는 것입니다.
git commit --amend
마지막 커밋내용이 "끝난줄 알았지?" 에서 만약 예상하지 못한 수정사항이 발생하는 경우가 많습니다.
amend 는 2가지를 분리할 수 있습니다.
- 단순히 커밋 메시지만를 수정
- 수정한 파일을 마지막 커밋 안에 밀어넣는 것
소스트리에서는 "마지막 커밋 수정" 기능을 사용할 수 있습니다.
마지막 커밋 수정을 사용하면 아래와 같이 커밋이 됩니다.
커밋 메시지를 여러 개 수정하기
"진짜 끝났어요." 를 마지막 커밋으로 Develop 브랜치에 merge 를 한다고 가정해 봅시다.
Develop 브랜치는 feature/decor 에서 작업했던 모든 커밋사항들을 포함하게 됩니다.
상당히 지저분해지네요;
Rebase (merge Squash)
대화식 재배치를 선택하면 선택된 커밋 내용까지를 묶음으로 처리할 수 있습니다.
하위 요소 대화식 재배치를 실행하면 대화식 재배치 화면이 뜹니다.
초기화: 처음 상태로 되돌립니다.
이전 결과 합치기: 2개의 커밋을 1개로 만듭니다.
위/아래 화살표: 커밋 순서를 바꿉니다.
feature/decor 의 수정내역을 묶는 커밋메시지를 작성합니다.
묶음이 성공하면 아래 그림과 같이 feture/decor 는 새로운 그래프가 생성됩니다.
이제 develop <-> feture/decor 브랜치를 합치는 일만 남았네요!
Develop 의 히스토리 꾸미를 완성하였습니다. 😀
commit ee8203c9a2d581cf0fdce145546af80e6d81838d (HEAD -> develop)
Develop 으로 묶었습니다.
commit 080223b983366d356793ea1cca08808c051b13de (feature/decor)
묶었습니다.
Decor 2 (+4 squashed commits)
Squashed commits:
[c336630] Decor 1
[9f1ea4b] 끝났다.
[a2b21c9] 제발 이제 버그 좀 없어라!
[aac03e3] 우리는 커밋을 Decor 1.. 로 하지
끝났다.
commit 3f11e4fba33fe81a9e77368a46385c757174bcc4 (origin/master, master)
first commit
만약 Conflict 나서 Rebase 가 중단된 된다면 그 다음 Rebase 실행하면 정상적으로 실행되지 않습니다.
재배치를 계속 하실려면 Conflict 해결한 후 재배치 계속의 명령어를 실행시켜야합니다.
소스트리 -> 동작 -> 재배치 계속
소스트리 -> 동작 -> 재배치 중단
git merge --continue // 병합 계속
git merge --abort // 병합 중단
Cherry Pick
다른 브랜치로 부터 선택적으로 일부 커밋을 가져옵니다.
체리 픽을 실행하면 Develop 브랜치는 위에 4개 커밋을 merge 한 수정 내용을 가지게 됩니다.
소스트리에서 체리픽을 계속 / 중단할려면 터미널은 열고 아래 명령어를 입력해줍니다.
(소스트리 커스텀 액션으로 등록해도 유용합니다.)
git cherry-pick --continue // 체리픽 계속
git cherry-pick --abort // 체리픽 중단
참조: