읽을 수 있는 Git 커밋 기록이 있습니까?
5328 단어 git
지저분한 커밋 기록을 정리합시다
git commit --amend로 최신 커밋 메시지 재사용
코드 품질 보증(일명 린터)에 익숙하지 않았던 때를 회상해 보면, 이러한 린터 검사에 매우 자주 실패했습니다. 결과적으로 다음과 같은 커밋 메시지가 있었습니다.
$ git commit -m "Improve code style"
이 명령은 지루하고 메시지는 의미 있는 정보를 제공하지 않습니다. 그런 다음
git commit --amend --no-edit
가 작동합니다. 현재 커밋에 대한 마지막 커밋 메시지를 재사용할 수 있습니다.apps/users/views.py
에서 후행 공백을 제거한다고 가정합니다.$ git add apps/users/views.py apps/users/serializers.py
$ git commit -m "Provide UserViewSet"
$ git add apps/users/views.py
$ git commit --amend --no-edit
git rebase로 긴 커밋 기록 정리
내 기능 분기 워크플로 중에 코드 검토 또는
나는 다음 날까지 그 일을 떠나야 한다.
작업이 끝나면 내 커밋 기록은 다음과 같이 끝날 수 있습니다.
(cs50w-network) hunghoang@MacBook-Pro project4 % git log --oneline
58701f5 (HEAD -> feature/migrate-to-htmx-alpinejs, origin/feature/migrate-to-htmx-alpinejs) Remove unused vanilla js
bf2f1b7 Fix navbar offsetHeight
c798ff0 minor change
05c3b93 Provide separate api directory
202f666 Disable follow-btn on host user timeline
93b22fd Support followers_count update
93e8647 Improve the feature of prevent editing 2 post simultaneously
e4e5aa5 Reuse PostViewSet
88b55b9 Refine post/list.html
09b9acf Re-arrange auth templates
0250ecb Re-arrange template to project-level
30ae17b Integrate htmx into post/list.html
이러한 변경 로그는 기능이 개발 단계에 있는 동안 중요하지만
main
분기의 전체 기록을 살펴볼 때 흩어져 있고 불필요해 보입니다. 스쿼싱 커밋은 다른 사람들이 이해할 수 있도록 커밋 기록을 깔끔하게 만들 뿐만 아니라 나중에 내가git merge
충돌을 해결할 때 한 번에 쉽게 충돌을 해결할 수 있습니다.먼저 기능 분기에 있는지 확인합니다.
$ git switch feature-branch
둘째, rebase를 사용하여 원래 기본 커밋 위에 분기를 스쿼시합니다.
$ git rebase --keep-base -i main
이 플래그는 무엇입니까?
--keep-base
플래그는 main
에서 분기된 기능 분기의 기본 커밋에 대한 git rebase를 알려줍니다.-i
는 rebaseinteractive mode를 가능하게 하는 대화형을 나타냅니다. 이렇게 하면 리베이스 작업을 선택하는 데 사용할 수 있는 파일이 있는 텍스트 편집기가 열립니다.셋째, rebase 파일을 변경하여 모든 커밋을 첫 번째 커밋으로 스쿼시합니다.
리베이스할 때 커밋이 사용할 때와 비교할 때 반대 순서로 나열됩니다
git log
.pick 30ae17b Integrate htmx into post/list.html
pick 93e8647 Improve the feature of prevent editing 2 post simultaneously
pick 93b22fd Support followers_count update
pick 202f666 Disable follow-btn on host user timeline
pick 05c3b93 Provide separate api directory
pick c798ff0 minor change
pick bf2f1b7 Fix navbar offsetHeight
pick f98b90a Remove unused vanilla js
# Rebase 3349b96..f98b90a onto 8b92fd6 (12 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amendingx
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
...
(간결성을 위해 추가 설명은 제거했습니다.)
커밋 아래의 주석 블록은 가능한 작업에 대한 미니 치트시트입니다.
squash에게 모든 커밋을 첫 번째 커밋으로 지정하려면
f
로 첫 번째 커밋을 제외한 모든 커밋 라인을 변경해 보겠습니다.pick 30ae17b Integrate htmx into post/list.html
f 93e8647 Improve the feature of prevent editing 2 post simultaneously
f 93b22fd Support followers_count update
f 202f666 Disable follow-btn on host user timeline
f 05c3b93 Provide separate api directory
f c798ff0 minor change
f bf2f1b7 Fix navbar offsetHeight
f f98b90a Remove unused vanilla js
# Rebase 3349b96..f98b90a onto 8b92fd6 (12 commands)
#
# Commands:
넷째, 파일을 저장하고 닫으면 Git이 squashing을 수행합니다. 완료되면
git log --oneline
결과를 확인하십시오.다섯째, 기본 분기의 최신 버전을 가져온 다음 병합할 수 있습니다
feature-branch
.결론
git commit --amend --no-edit
및 git rebase --keep-base -i main
는 내가 기능 분기 워크플로 중에 가장 많이 사용하는 두 가지 Git 명령입니다. 그들이 당신을 도울 수 있기를 바랍니다.
Reference
이 문제에 관하여(읽을 수 있는 Git 커밋 기록이 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hoangquochung1110/do-you-have-readable-git-commit-history--4ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)