본문 바로가기

Git

0원으로 현업 환경을 설정해보자! [번외편] 히스토리 꾸미기

이 포스팅은 "실제 현업의 환경을 설정해보자!"의 Series  중 일부입니다.

 

1.  0원으로 현업 환경을 설정해보자! Git

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 // 체리픽 중단

 

 

참조: 

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%8B%A8%EC%9E%A5%ED%95%98%EA%B8%B0