일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 레이아웃
- React
- Notification
- Push
- graphql
- 알림
- AWS
- ubuntu
- github
- JavaScript
- 후기
- EC2
- Background
- 네이티브
- 면접
- 배포
- 변수
- Python
- navigation
- 카카오
- 디자인
- JS
- NATIVE
- 스코프
- MongoDB
- 리액트
- Express
- scope
- 자바스크립트
- 네비게이션
- Today
- Total
어서와, 개발은 처음이지?
git blame 시 특정 commit 숨기기 (feat. git lens extension) 본문
개요
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에 적용하는 방식을 설정했습니다.
비슷한 상황을 겪으실 다른분들에게 도움이 됬으면 좋겠네요!
감사합니다.
'개발환경' 카테고리의 다른 글
mac podman 설치 및 docker alias (symbolic link) (0) | 2022.06.11 |
---|