어서와, 개발은 처음이지?

git blame 시 특정 commit 숨기기 (feat. git lens extension) 본문

개발환경

git blame 시 특정 commit 숨기기 (feat. git lens extension)

오지고지리고알파고포켓몬고 2022. 6. 12. 12:57
반응형

개요

git blame 명령어를 사용하면 라인별로 누가 어떤 커밋을 남겼는지 히스토리를 볼 수 있는데,

vscode에서 git lens를 사용하면 git blame 기능을 쉽게 사용할 수 있습니다.

 

 

이 기능을 사용하면 개발중에 history를 추적하기 좋은데,

최근에 prettier rule을 바꾸면서 전체적으로  code style을 변경하게 되었습니다.

 

이로인해 아래 이미지처럼 수많은 diff가 생겨나게됐는데요.

 

(왼쪽 노란 부분이 다 diff!)

 

사실 이런 코드 스타일 규칙 일괄변경 사항은 개발 시 큰 관심사가 아닌 내용인데, 이 변경 사항으로 히스토리가 오염(?)되고 기존 커밋이 가려져서 확인하기 번거롭게 만드는 불편함이 생겼습니다.

 

이번 글에서는 blame 시 이런 불필요한 커밋 히스토리를 가리는 방법을 알아보겠습니다.

blame에서 특정 커밋 숨기기 (ignore rev)

우선 방금 변경사항을 커밋합니다.

 

이 커밋은 ba4eb610121f856db3607d053c809808dff11685이름의 hash로 저장되었군요.

 

git blame 명령어는 --ignore-rev라는 옵션을 사용하여 특정 커밋을 blame하지 않을 수 있습니다.

git blame --ignore-rev <sha1> <file>

이를 위 케이스에 적용해보면 다음과 같이 사용할 수 있습니다.

git blame --ignore-rev ba4eb610121f856db3607d053c809808dff11685 ./pages/Case1_1.tsx

 

일단 명령어로 blame과 --ignore-rev를 적용한 blame을 비교해보겠습니다.

 

 

왼쪽이 blame, 오른쪽이 --ignore-rev 옵션이 적용된 사항인데, 자세히 보시면 왼쪽엔 ba4eb610이 표시되고, 오른쪽엔 표시되지 않는 모습을 볼 수 있습니다.

 

이런식으로 --ignore-rev 옵션을 사용하면 특정 커밋을 숨길 수 있는데, 또다른 옵션인 --ignore-revs-file이라는 옵션을 사용하면 특정 커밋 묶음을 파일로 명시하여 전체를 숨길 수 있고,

 

이 옵션은 git config에 ignoreRevsFile로 등록하여 상시적용할 수 있습니다.

파일로 커밋 숨기기 (ignore revs file)

우선 .git 프로젝트 root 경로에

ignore할 커밋 묶음을 명시할 .git-blame-ignore-revs 파일을 생성합니다.

 

그리고 여기에 ignore할 커밋을 명시해줍니다.

 

마지막으로 아래 명령어를 사용하여 git config에 ignoreRevsFile을 등록합니다.

git config --local blame.ignoreRevsFile .git-blame-ignore-revs

 

잘 등록되었는지는 config 파일을 확인해보면 알 수 있습니다.

 

 

자 이제 다시 파일을 열어서 변경사항이 잘 적용됐는지 확인해볼까요?

 

아주 잘 적용되었습니다! 새로운 rule을 적용한 (세미콜론이 있는 line을 봐주세요) 곳에 ba4eb610 커밋 사항이 숨겨진 것을 볼 수 있습니다!

마치며

이번 글에서는 blame 시 특정 커밋을 숨기는 방법을 알아보았습니다.

 

최근에 code style rule 변경을 제안했는데 동료분이 커밋이 오염되는 부분을 건의하셨고

 

원래는 이를 해결하기위해 git lens의 custom arguments 옵션을 사용해보려고했으나, multi workspace를 사용하는 경우에 workspace - 각 repository 간 일관성있게 적용하기 어려운 측면이있어서 git local config에 적용하는 방식을 설정했습니다.

 

비슷한 상황을 겪으실 다른분들에게 도움이 됬으면 좋겠네요!

감사합니다.

 

 

0 Comments
댓글쓰기 폼