VSCODE GUI 환경에서 보다 쉽게 rebase interactive 를 하는 방법을 소개합니다.
- 당 문서는 Rebase --interactive option 을 보다 이해하기 쉽게 작성해 놓은 문서 입니다.
솔루션 개발 시, 로컬(개인 개발 PC - 솔루션에서는 사용자 디렉토리) 브랜치 에서 보다 커밋을 깔끔하게 정리하여 MR(Merge Request) 또는 PR(Pull Request) 을 요청할 수 있도록 함을 목적으로 합니다.
해당 기능은 개발 디렉토리에서 작업 시, 쓸데없거나 작업하다가 무분별하게 작성된 commit 들을 Merge Request 전 개인으로 정리하는 것을 주된 기능으로 합니다
rebase interactive 환경에 들어가는 command
$git rebase --interactive(--i) <commit id>
해당 문서에서는 다음과 같은 기능들에 대한 가이드가 제공됩니다.
rebase interactive 는 기본적으로 순서를 보장해야 합니다
위 이미지와 같이 테스트커밋 1, 테스트커밋 2, 테스트커밋 3 을 묶을 수는 있지만 테스트커밋 1, 테스트커밋 2, 테스트커밋 4 를 묶을 수는 없습니다.
따라서, 각 순서에 따른 병합은 가능하지만 중간을 건너 뛴 commit 은 한번에 묶을 수 없습니다.
또한, 기능 상 같은 동작일지라도 "테스트커밋 2 -> 테스트커밋 1" 로 rebase 는 가능하나 기능상 "테스트커밋 1 -> 테스트커밋 2" 로 rebase 할 수 없습니다.
fixup option 은 상위 commit에 하위 commit을 병합하는 과정을 말합니다 단, 커밋메시지는 변경할 수 없습니다.
위와 같은 커밋리스트가 있다고 가정을 했을 경우 위에서 설명한 interactive 모드로 들어갑니다.
$git rebase --interactive {commitId}
하단에 각 옵션들에 대한 설명이 달려있습니다. 참고하시면 됩니다.
빨간 네모 박스 에서 작성한 것과 같이 기본적으로 각 commit 별 옵션들은 pick 으로 설정되어있고 해당 부분들을 수정하시면 됩니다.
위 사진과 같이 pick -> fixup 으로 수정하고 저장을 하게되면 rebase가 진행되고 아래와 같은 commit log를 가지게 됩니다.
fixup option 자체는 commit 메시지를 수정하지 않고 기준이 될 commit 에 적용이 됩니다.
squash option 은 상위 commit에 하위 commit을 병합하는 과정을 말합니다 squash 는 커밋 메시지를 변경할 수 있습니다.
앞서 같은 방식으로 interactive 모드에 들어갑니다.
squash 도 마찬가지로 순서를 보장하여야합니다.
위와 같이 작성하면 아래와 같은 화면이 나옵니다.
해당 부분을 저렇게 수정하고 테스트 커밋 4,5 도 같은 방식으로 진행하게 되면 아래와 같은 commit log를 가지게 됩니다.
pick option 은 해당 커밋을 단순히 유지한다는 의미입니다.
해당 option 을 사용하여 진행하게 되면 아래와 같은 commit log를 만들 수 있습니다.
edit option 은, 해당 커밋을 할 당시에 환경으로 돌아가고 해당 커밋을 수정할 수 있습니다.
해당 사항을 적용하게 되면 CLI에 아래와 같은 문구가 나옵니다.
해당 과정에서 amend를 사용하여 수정할 수 있고 아니면 continue 하여 넘어갈 수 있습니다.
위와 같은 프로세스를 진행하게 되면 아래와 같은 commit log를 가집니다.
reward option 은 단순히 commit 메시지만 수정합니다.
VSCODE GUI 환경에서 보다 쉽게 rebase interactive 를 하는 방법을 소개합니다.
git config option 수정
각 사용자별 DOCUMENT_ROOT 에서 config 파일에 접근합니다.
$git cd .git
$git vi config
[core] 부분에 아래와 같은 코드를 삽입해주세요.
editor = code -w
// 새창으로 띄우고 싶을 경우
editor = code -n -w
vscode 편집기 > 터미널 > 새터미널
터미널 영역에서 위에 설명했던 방법으로 interactive 모드로 들어가게 되면 GUI환경에서 사용하실 수 있습니다.
Cypress - 클라이언트 테스트 자동화란? + env 동적 전달 (0) | 2023.04.20 |
---|---|
SpringBoot APM - Prometheus 란? (0) | 2023.04.20 |
redis queue system (1) | 2022.03.30 |
SRS 작성방법 (Software Requirements Specification) (0) | 2021.08.03 |
RFC-5531 (0) | 2021.03.05 |