Git 커밋 스쿼싱 마스터하기
Git은 엄청나게 강력한 버전 제어 시스템이지만 때로는 여러 커밋을 단일 커밋으로 결합하고 싶을 수도 있습니다. 이렇게 하면 프로젝트 기록을 정리하여 다른 사람이 변경 진행 상황을 더 쉽게 이해할 수 있습니다. 메인 브랜치에 병합하기 전에 정리하거나 더 깔끔한 커밋 로그를 원하는 경우 커밋을 스쿼시하는 것은 유용한 기술입니다.
이 가이드에서는 마지막 N개 커밋을 하나로 합치는 단계를 안내합니다. 결국에는 더 명확하고 간결한 커밋 기록을 갖게 됩니다. 프로세스를 자세히 살펴보고 Git 워크플로를 더욱 효율적이고 체계적으로 만들어 보겠습니다.
명령 | 설명 |
---|---|
git rebase -i HEAD~N | 마지막 N개 커밋에 대해 대화형 리베이스를 시작하여 커밋을 스쿼시하거나 편집할 수 있습니다. |
pick | 대화형 리베이스에서 있는 그대로 포함할 커밋을 선택하는 데 사용됩니다. |
squash (or s) | 커밋을 이전 커밋과 결합하기 위해 대화형 리베이스에 사용됩니다. |
git rebase --continue | 충돌을 해결하거나 커밋 메시지를 편집한 후 리베이스를 계속합니다. |
git push --force | 강제로 변경 사항을 원격 저장소에 푸시하고 기록을 덮어씁니다. |
Git Squashing에 대한 자세한 설명
위 스크립트에서 사용된 기본 명령은 다음과 같습니다. git rebase -i HEAD~N, 마지막 N 커밋에 대한 대화형 리베이스를 시작합니다. 이 명령을 사용하면 스쿼시하거나 편집할 커밋을 선택할 수 있습니다. 대화형 리베이스가 시작되면 커밋을 나열하는 편집기가 열립니다. 단어를 교체하여 pick ~와 함께 squash (또는 삼) 결합하려는 커밋 옆에서 여러 커밋을 하나로 압축할 수 있습니다. 편집기를 저장하고 닫으면 Git은 압축된 커밋에 대한 커밋 메시지를 편집하라는 메시지를 표시합니다.
리베이스 중에 충돌이 있으면 이를 해결한 다음 사용할 수 있습니다. git rebase --continue 계속하려면. 마지막으로 변경 사항을 다음을 사용하여 원격 저장소로 푸시해야 합니다. git push --force 기록을 덮어쓰려면 이 프로세스는 특히 협업 프로젝트에서 브랜치를 병합하기 전에 커밋 기록을 정리하여 읽기 쉽고 관리하기 쉽게 만드는 데 중요합니다.
Git에서 마지막 N개 커밋 결합
명령줄에서 Git 사용
git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# An editor will open with a list of commits
# Change 'pick' to 'squash' (or 's') for each commit you want to combine
# Save and close the editor
# Another editor will open to combine commit messages
# Save and close the editor to complete the rebase
Git Interactive Rebase로 커밋 병합
커밋 스쿼시를 위해 Git Bash 사용
git rebase -i HEAD~N
# Change 'pick' to 'squash' for the commits to be squashed
# Save the file to proceed
# Edit the commit message as needed
# Save and close the editor
# Resolve any conflicts if they arise
git rebase --continue
# Continue the rebase process
git push --force
# Force push the changes to the remote repository
고급 Git 커밋 관리
Git에서 커밋을 스쿼시하는 또 다른 측면은 깨끗하고 의미 있는 프로젝트 기록을 유지하는 개념과 관련이 있습니다. 기능 브랜치에서 작업할 때 점진적인 진행 상황을 나타내는 수많은 작은 커밋을 갖는 것이 일반적입니다. 이는 개발 중에는 유용하지만 기본 분기의 기록을 복잡하게 만들 수 있습니다. 병합하기 전에 이러한 커밋을 압축하면 중요하고 높은 수준의 변경 사항만 기록되므로 다른 사람들이 프로젝트의 발전 과정을 더 쉽게 이해할 수 있습니다.
또한 스쿼시 커밋은 저장소 크기를 줄이는 데 도움이 될 수 있습니다. Git의 각 커밋은 변경 사항의 스냅샷을 저장하며, 작은 커밋이 너무 많으면 스토리지 요구 사항이 늘어날 수 있습니다. 이러한 커밋을 결합하면 저장소를 간소화할 수 있으며 이는 많은 기여자가 있는 대규모 프로젝트에 특히 유용할 수 있습니다.
Git 커밋 스쿼싱에 대한 일반적인 질문
- Git에서 커밋 스쿼싱은 무엇을 의미하나요?
- 스쿼시 커밋은 여러 커밋을 단일 커밋으로 결합하여 더 깔끔한 프로젝트 기록을 만드는 것을 의미합니다.
- 대화형 리베이스를 어떻게 시작하나요?
- 다음 명령을 사용하여 대화형 리베이스를 시작할 수 있습니다. git rebase -i HEAD~N, N을 커밋 수로 바꿉니다.
- 대화형 리베이스에서 '선택'과 '스쿼시'의 차이점은 무엇입니까?
- 'Pick'은 커밋을 그대로 유지하는 것을 의미하고, 'squash'는 이전 커밋과 결합하는 것을 의미합니다.
- 충돌을 해결한 후 리베이스를 계속하려면 어떻게 해야 합니까?
- 충돌을 해결한 후 다음 명령을 사용하십시오. git rebase --continue 계속하려면.
- 'git push --force' 명령은 무엇을 합니까?
- 명령 git push --force 로컬 변경 사항으로 원격 저장소를 강제로 업데이트하고 기록을 덮어씁니다.
- 스쿼시 커밋으로 인해 데이터가 손실될 수 있나요?
- 주의 깊게 수행하면 스쿼싱으로 인해 데이터가 손실되지 않지만 리베이스를 수행하기 전에 브랜치를 백업하는 것이 중요합니다.
Git 스쿼싱에 대한 최종 생각
Git에서 커밋을 스쿼시하는 것은 프로젝트 기록을 깔끔하고 이해하기 쉽게 유지하는 데 유용한 기술입니다. 여러 개의 작은 커밋을 보다 의미 있는 단일 커밋으로 결합하면 리포지토리의 가독성과 관리 용이성을 향상시킬 수 있습니다. 이 방법은 효과적인 팀워크를 위해 명확한 커밋 로그가 중요한 협업 환경에서 특히 중요합니다. 원활하고 성공적인 스쿼싱 경험을 보장하려면 리베이스 프로세스 중에 충돌을 주의 깊게 검토하고 해결해야 합니다.