상세 컨텐츠

본문 제목

GIT: Interactive 와 vscode에서 사용하기

R&D

by devTak 2022. 7. 4. 11:44

본문

반응형

VSCODE GUI 환경에서 보다 쉽게 rebase interactive 를 하는 방법을 소개합니다.

사전 준비사항

  1. vscode extension 으로 gitlens 를 추가합니다.
  2. git config 옵션을 수정합니다.

- 당 문서는 Rebase --interactive option 을 보다 이해하기 쉽게 작성해 놓은 문서 입니다.

목적

솔루션 개발 시, 로컬(개인 개발 PC - 솔루션에서는 사용자 디렉토리) 브랜치 에서 보다 커밋을 깔끔하게 정리하여 MR(Merge Request) 또는 PR(Pull Request) 을 요청할 수 있도록 함을 목적으로 합니다.

기능의 목적

해당 기능은 개발 디렉토리에서 작업 시, 쓸데없거나 작업하다가 무분별하게 작성된 commit 들을 Merge Request 전 개인으로 정리하는 것을 주된 기능으로 합니다

 

사용방법

CLI 환경

rebase interactive 환경에 들어가는 command

$git rebase --interactive(--i) <commit id>

해당 문서에서는 다음과 같은 기능들에 대한 가이드가 제공됩니다.

  1. fixup
  2. squash
  3. pick
  4. edit
  5. reward

전제조건

rebase interactive 는 기본적으로 순서를 보장해야 합니다

위 이미지와 같이 테스트커밋 1, 테스트커밋 2, 테스트커밋 3 을 묶을 수는 있지만 테스트커밋 1, 테스트커밋 2, 테스트커밋 4 를 묶을 수는 없습니다.

따라서, 각 순서에 따른 병합은 가능하지만 중간을 건너 뛴 commit 은 한번에 묶을 수 없습니다.

또한, 기능 상 같은 동작일지라도 "테스트커밋 2 -> 테스트커밋 1" 로 rebase 는 가능하나 기능상 "테스트커밋 1 -> 테스트커밋 2" 로 rebase 할 수 없습니다.

Fixup

fixup option 은 상위 commit에 하위 commit을 병합하는 과정을 말합니다 단, 커밋메시지는 변경할 수 없습니다.

위와 같은 커밋리스트가 있다고 가정을 했을 경우 위에서 설명한 interactive 모드로 들어갑니다.

$git rebase --interactive {commitId}

 

하단에 각 옵션들에 대한 설명이 달려있습니다. 참고하시면 됩니다.

빨간 네모 박스 에서 작성한 것과 같이 기본적으로 각 commit 별 옵션들은 pick 으로 설정되어있고 해당 부분들을 수정하시면 됩니다.

위 사진과 같이 pick -> fixup 으로 수정하고 저장을 하게되면 rebase가 진행되고 아래와 같은 commit log를 가지게 됩니다.

fixup option 자체는 commit 메시지를 수정하지 않고 기준이 될 commit 에 적용이 됩니다.

Squash

squash option 은 상위 commit에 하위 commit을 병합하는 과정을 말합니다 squash 는 커밋 메시지를 변경할 수 있습니다.

앞서 같은 방식으로 interactive 모드에 들어갑니다.

 

squash 도 마찬가지로 순서를 보장하여야합니다.

위와 같이 작성하면 아래와 같은 화면이 나옵니다.

해당 부분을 저렇게 수정하고 테스트 커밋 4,5 도 같은 방식으로 진행하게 되면 아래와 같은 commit log를 가지게 됩니다.

Pick

pick option 은 해당 커밋을 단순히 유지한다는 의미입니다.

Squash & Fixup 응용

해당 option 을 사용하여 진행하게 되면 아래와 같은 commit log를 만들 수 있습니다.

Edit

edit option 은, 해당 커밋을 할 당시에 환경으로 돌아가고 해당 커밋을 수정할 수 있습니다.

해당 사항을 적용하게 되면 CLI에 아래와 같은 문구가 나옵니다.

해당 과정에서 amend를 사용하여 수정할 수 있고 아니면 continue 하여 넘어갈 수 있습니다.

  1.  
    git rebase --amend 를 사용하여 commit 메시지를 수정
  2. 테스트커밋 4와 5사이에 파일 수정 후 커밋
  3. git rebase --continue 를 통한 테스트 커밋 5 rebase

위와 같은 프로세스를 진행하게 되면 아래와 같은 commit log를 가집니다.

  •  
    테스트커밋4 - 수정 : git rebase --amend 를 통한 메시지 수정
  • test수정 : 실제로 해당 커밋과정에서 파일을 수정하여 add 하고 commit 한 내용
  • 테스트커밋5 : pick 상태였던 커밋

Reward

reward option 은 단순히 commit 메시지만 수정합니다.

VSCODE GUI 환경

VSCODE GUI 환경에서 보다 쉽게 rebase interactive 를 하는 방법을 소개합니다.

사전 준비사항

  1. vscode extension 으로 gitlens 를 추가합니다.
  2. git config 옵션을 수정합니다.

GitLens Extension 설치

 

git config option 수정

각 사용자별 DOCUMENT_ROOT 에서 config 파일에 접근합니다.

$git cd .git
$git vi config

[core] 부분에 아래와 같은 코드를 삽입해주세요.

editor = code -w

// 새창으로 띄우고 싶을 경우
editor = code -n -w

사용방법

vscode 편집기 > 터미널 > 새터미널

터미널 영역에서 위에 설명했던 방법으로 interactive 모드로 들어가게 되면 GUI환경에서 사용하실 수 있습니다.

반응형

'R&D' 카테고리의 다른 글

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

관련글 더보기