반응형

What is Interactive Rebase [Advanced Tutorial]

https://youtu.be/JkpYvXdbnfQ

Interactive Rebase란?

병합하기 위한 방법 중 하나. (다른 하나는 Merge)

  • git rebase
  • git rebase -i
    • -i : interactive 옵션
  • rebase는 자동으로 작업을 해주는데 -i 옵션을 사용하면 편집이 가능하다.

Interactive Rebase 의 종류

  • Pick
    • 대상 커밋 선택 (Default)
  • Reword
    • 커밋 메시지를 변경할 수 있다.
  • Squash
    • 이전 커밋에 병합
  • Drop
    • Rebase를 수행하고자 하는 커밋들 중에 선택한 커밋을 삭제할 수 있다.
  • Reorder
    • Pick하고자 하는 커밋의 순서를 변경할 수 있다.

실습

  • 목표 : 여러개로 나눠져 있는 커밋을 합치고자 함.
    • 환전 기록 Page UI 및 동작 추가
    • 환전 기록 firestore CRUD 구현
    • 환율, 날짜 Item 컴포넌트 추가

  • 대상 커밋 선택 > Interactive Rebase 버튼 클릭
  • 최종적으로 합치고 싶은
    커밋 이전의 커밋을 선택하여 Interactive Base 버튼을 선택해야 함.
    '환전 기록 Page UI 및 동작 추가'에 이후 커밋들을 squash하고 싶은 경우,
    이전 커밋인 '환전 내역 Firestore에서 가져오도록 수정' 커밋 선택 후 Interactive Rebase 버튼 선택.
  • 원하는 Interactive Rebase 동작을 선택하여 수행
    • 처음 화면
    • 커밋을 합치고 싶기에 Squash 선택
    • GitKraken에서 자동으로 병합되는 마지막 커밋 메시지를 정리해 줌.(Reword)
      • 원래 커밋 메시지 (Reword 전)
      • squash and 자동 reword 후 커밋 메시지
    • 'Start Rebase' 버튼 선택

그림은 없지만, 이후로 '환전 기록 Summary UI 및 동작 추가' 커밋을 '환전 기록 Page UI 및 동작 추가' 커밋으로 squash 한번 더 수행 함.

  • Rebase 완료 후 커밋 내역

실습 (Advanced)

한번에 squash 작업을 수행

Interactive Rebase 결과물 Remote에 반영

remote git에 이전 커밋 내용들이 들어가 있고 local에서 Interactive Rebase한 후의 결과물을 반영하고 싶은 경우

  • 이미 remote repository에 push 해버린 commit들 하나로 합치기
  • 사실 권장하는 방법은 아닌걸로 보인다.
    • Rebase 설명(git-scm.com) 중 Rebase의 위험성이라는 항목이 있고 그 내용은 아래와 같다.
    Rebase가 장점이 많은 기능이지만 단점이 없는 것은 아니니 조심해야 한다. 그 주의사항은 아래 한 문장으로 표현할 수 있다.이 지침만 지키면 Rebase를 하는 데 문제 될 게 없다. 하지만, 이 주의사항을 지키지 않으면 사람들에게 욕을 먹을 것이다.
  • Rebase는 기존의 커밋을 그대로 사용하는 것이 아니라 내용은 같지만 다른 커밋을 새로 만든다. 새 커밋을 서버에 Push 하고 동료 중 누군가가 그 커밋을 Pull 해서 작업을 한다고 하자. 그런데 그 커밋을 git rebase 로 바꿔서 Push 해버리면 동료가 다시 Push 했을 때 동료는 다시 Merge 해야 한다. 그리고 동료가 다시 Merge 한 내용을 Pull 하면 내 코드는 정말 엉망이 된다.
  • 이미 공개 저장소에 Push 한 커밋을 Rebase 하지 마라

Remote 브랜치 Git 내역

Local 브랜치 Git 내역 (Rebase 작업 결과)

Local 브랜치 'Push'

Local 브랜치는 Remote 브랜치 뒤에 있으니 Pull을 실행하여 Local 브랜치를 업데이트하라고 함.

  • Pull (fast-forward if possible)
  • Force Push
  • Cancel

이런 경우, 'Force Push'를 통해 해당 내용을 업데이트 해줘야 하는데 주의할 점이 있음.

블로그 내용 발췌 (https://json.postype.com/post/209499)

블로그 내용이 오타같음.
아무도 squash '하기 전' commit 들을 pull 하지 않았다는 가정하에 이 작업이 수행되어야 한다.
로 적혀 있어야 할 것 같은데... (이해한게 맞는지 확인이 필요하구먼)

'Force Push 선택' > 경고 문구 표시 (※ 정말 주의해야 함!)

Force push is a destructive action and cannot be undone. Are you sure?

궁금증)

이전 커밋들 내용으로 PR을 요청한 상태인데,
이런 경우 force push를 하고 나면 PR 내용은 어떻게 표시될까?

→ 결론은 PR도 유지되고 변경된 내용도 잘 반영되어 보인다.

Rebase 이전 PR

Rebase 'Force Push' 이후 PR

반응형
반응형

이번 글에서는 Gitmoji를 사용하는 방법을 알아보겠습니다.

 

Gitmoji란 git + emoji 를 합쳐서 부르는 말인데요,

간단하게 커밋 메시지에 이모티콘을 표준화하여 사용한다라고 생각하시면 됩니다.

 

개발자에 따라 gitmoji 또는 gitEmoji라고 사용하고 있으나 뜻은 같으니 참고해주세요.

 

gitmoji는 이런 emoji를 git에서 사용합니다.

이모지 (Emoji)
이모지는 일본에서 개발된 전자 처리 그림문자 및 그 기술을 말한다.

 

윈도우에서 이모지 사용하기라는 글이 있으니 궁금하신 분은 읽어주세요. 😀

frontmulti.tistory.com/59

 

[이모지] 윈도우 10에서 이모티콘(이모지 Emoji)을 사용해 보자

(。・∀・)ノ゙ 윈도우 10에서 이모티콘을 사용하는 방법을 소개하겠습니다.😁 예전 윈도우에서는 ㅁ(자음) + '한자' 키를 이용해서 특수기호들을 사용했었는데요. 윈도우 10에서는 이모티콘(이

frontmulti.tistory.com

 

우선 Gitmoji를 사용하는 장점에 대해 얘기드리겠습니다.

  • 커밋 로그가 깔끔해진다
    • Emoji만 봐도 어떤 내용인지 한 번에 알 수 있게 됩니다.
    • 🐛 commit message
    • 위의 메시지를 보고 무엇이 떠오르시나요?
  • 커밋 하나 = 기능 하나
    • 커밋을 남길 때 emoji에 해당하는 내용을 담기 위해 정리된 코드를 하나의 커밋에 남기게 됩니다.
    • 보통 커밋을 남길 때 의식하지 않는다면 A기능, B기능, 버그 수정, 문서 수정 등을 의식의 흐름대로 작성하다 하나의 커밋에 남기게 될 때가 있습니다. 
    • 이렇게 되면, 커밋 메시지도 매우 길어지죠.  'A기능, B기능, 버그 수정, 문서 수정 반영' 이런 식으로요.
    • 그런데 emoji를 하나만 넣을 수 있다면 의식적으로 하나의 작업에 하나의 커밋을 남길 수밖에 없게 됩니다.

결국 Gitmoji를 사용하면 커밋 로그가 깔끔해지는 효과를 볼 수 있습니다.

 

 

이제 Gitmoji를 사용하는 방법을 설명하겠습니다.

<emoji> commit message

이렇게 커밋 메시지를 남기면 됩니다. 

<emoji> commit message
<emoji2> commit message

하나의 커밋에 여러 기능을 같이 넣은 경우에는 위와 같이 여러줄을 작성하면 됩니다.

참 쉽죠?

 

gitmoji를 적용하면 아래와 같이 직관적으로 커밋 내역을 확인할 수 있습니다.

[gitmoji 사용 예] https://github.com/carloscuesta/gitmoji-cli 

 

여기서 실무에서 gitmoji를 사용할 때 주의해야할 점이 있습니다.

그건 바로 약속인데요.

 

gitmoji를 사용할 때 어느 emoji가 어떤 의미를 나타내는지에 대한 약속을 하고 프로젝트를 진행해야 합니다.

예를 들어,

  • A는 🐛: 버그 수정
  • B는 🐛: 불필요한 코드 삭제

위와 같이 서로 다른 의미로 커밋메시지를 남기면 혼란이 오겠죠?

그래서 팀원들과 emoji가 어떤 의미를 나타내는지에 대해 공유하고 적용해야 합니다.

 

그에 대한 방법 몇가지를 소개해드리겠습니다.

원하시는 방법을 사용해보세요.

 

 

1. 크롬 확장앱 사용

 

GitEmoji- emoji for git commit message 

 

위의 크롬 확장앱을 설치하시면 아래 화면과 같이 필요한 GitEmoji를 검색하고

해당 Emoji를 클릭하면 복사가 되어 편하게 사용하실 수 있습니다.(Link)

 

2. 웹사이트 이용

gitmoji 사이트를 북마크 해두고 필요할때마다 방문해서 사용하시면 됩니다.

해당 사이트에서도 emoji를 선택하면 복사가 되어 편하게 사용하실 수 있습니다.

이 사이트를 참고하여 구글 확장앱이 만들어진 것 같네요.

gitmoji.dev/

 

gitmoji

An emoji guide for your commit messages.

gitmoji.dev

 

3. Markdown 문서 사용

 

GitEmoji 내용이 있는 Markdown문서를 프로젝트 파일 내에 위치시키고

팀원들이 보면서 사용하는 방법입니다.

잘 정리해둔 문서가 있으니 참고하세요. (github.com/felipealvessi/GitCommitEmoji.md)

GitCommitEmoji.md 중 일부 내용

 

공유드린 확장앱이나 문서에 있는 대로만 사용해야 된다는 것은 아니니

팀원들과 프로젝트 특성에 맞는 emoji를 추가해서 사용해 보는 것도 좋은 경험이 될 것 같네요.

 

🍗 :poultry_leg: 치킨과

🍻 :beer: 맥주 마시며

 

즐거운 코딩 하세요~ 😊

반응형

'프로그래밍 > Git' 카테고리의 다른 글

[Git] GitKraken Interactive Rebase  (0) 2021.10.18

+ Recent posts