마지막 N Git 커밋을 결합하는 방법

마지막 N Git 커밋을 결합하는 방법
마지막 N Git 커밋을 결합하는 방법

Git에서 커밋 스쿼싱 마스터하기:

프로젝트 작업을 할 때 커밋 기록은 수많은 작은 커밋으로 인해 복잡해질 수 있습니다. 이러한 사소한 커밋으로 인해 변경 사항을 검토하고 프로젝트 기록을 이해하기가 어려울 수 있습니다.

Git에서는 마지막 N개 커밋을 단일 커밋으로 압축하여 더 깔끔하고 관리하기 쉬운 기록을 만들 수 있습니다. 이 가이드에서는 이를 달성하는 단계를 안내하여 버전 관리를 더욱 효율적으로 만듭니다.

명령 설명
git rebase -i HEAD~N 마지막 N 커밋의 대화형 리베이스를 시작합니다.
pick 대화형 리베이스 중에 커밋을 있는 그대로 유지합니다.
squash 대화형 리베이스 중에 커밋을 이전 커밋과 결합합니다.
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo 리베이스 할 일 목록의 첫 번째 커밋을 제외한 모든 커밋에 대해 'pick'을 'squash'로 자동으로 바꿉니다.
git rebase --continue 충돌을 해결한 후 리베이스 프로세스를 계속합니다.
git rebase --abort Rebase 프로세스를 중단하고 Rebase가 시작되기 전 상태로 돌아갑니다.
HEAD~N 현재 HEAD 이전의 커밋 N 위치를 참조합니다.

Git 커밋 스쿼싱 이해

첫 번째 스크립트는 git rebase -i HEAD~N 마지막 N 커밋의 대화형 리베이스를 시작합니다. 대화형 화면에서 결합하려는 커밋에 대해 'pick'을 'squash'로 바꿉니다. 이 프로세스는 여러 개의 작은 커밋을 하나로 통합하여 커밋 기록을 더욱 깔끔하고 관리하기 쉽게 만드는 데 도움이 됩니다. 편집 후 편집기를 저장하고 닫습니다. 충돌이 있으면 이를 해결하고 계속 진행합니다. git rebase --continue.

두 번째 스크립트는 스쿼싱 프로세스를 자동화하는 Bash 스크립트입니다. 커밋 수(N)가 제공되는지 확인하는 것부터 시작됩니다. 그런 다음 실행됩니다. git rebase -i HEAD~N 그리고 사용 리베이스 할 일 목록의 첫 번째 커밋을 제외한 모든 커밋에 대해 'pick'을 'squash'로 대체합니다. 이렇게 하면 파일을 수동으로 편집하지 않고도 여러 커밋을 더 쉽게 스쿼시할 수 있습니다. 마지막으로 리베이스 프로세스를 계속합니다. git rebase --continue, 필요한 충돌 해결을 자동으로 처리합니다.

Git Rebase를 사용하여 여러 커밋을 하나로 스쿼시

힘내 명령

git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit

쉘 스크립트를 사용하여 커밋 스쿼시 자동화

배쉬 스크립트

#!/bin/bash
if [ -z "$1" ]
then
  echo "Usage: ./squash_commits.sh <N>"
  exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue

고급 Git 스쿼싱 기술

Git에서 커밋을 스쿼시하는 데 있어 또 다른 중요한 측면은 프로세스 중에 발생할 수 있는 병합 충돌을 처리하는 것입니다. 여러 커밋을 결합할 때 서로 다른 커밋의 변경 사항이 서로 충돌할 수 있습니다. 이러한 충돌을 해결하기 위해 Git은 다음과 같은 명령을 제공합니다. git status 어떤 파일이 충돌하는지 확인하고 git add 해결된 것으로 표시합니다. 충돌을 해결한 후 다음을 사용하여 리베이스를 계속합니다. git rebase --continue.

문제가 발생할 경우 리베이스를 중단하는 방법을 아는 것도 유용합니다. 명령 git rebase --abort 리베이스 프로세스를 중지하고 리베이스가 시작되기 전의 이전 상태로 저장소를 되돌립니다. 이렇게 하면 리베이스 프로세스 중에 변경된 내용을 안전하게 취소할 수 있습니다. 이러한 명령을 이해하면 복잡한 Git 기록을 효율적으로 관리하는 능력이 크게 향상될 수 있습니다.

Git 커밋 스쿼싱에 대해 자주 묻는 질문

  1. 스쿼싱 커밋은 무엇을 의미하나요?
  2. 스쿼싱 커밋은 여러 커밋을 단일 커밋으로 결합하여 커밋 기록을 단순화하는 것을 의미합니다.
  3. 왜 커밋을 스쿼시해야 하나요?
  4. 커밋을 스쿼시하면 특히 작은 커밋이 많이 사용될 때 프로젝트 기록을 더 깔끔하고 읽기 쉽게 만들 수 있습니다.
  5. 대화형 리베이스를 어떻게 시작하나요?
  6. 명령을 사용하십시오 git rebase -i HEAD~N, N을 스쿼시하려는 커밋 수로 바꿉니다.
  7. 대화형 리베이스에서 '선택'과 '스쿼시'는 무엇을 의미하나요?
  8. 'Pick'은 커밋을 그대로 유지하는 반면, 'squash'는 커밋을 이전 커밋과 결합합니다.
  9. 리베이스 중 충돌을 어떻게 해결하나요?
  10. 사용 git status 충돌을 식별하고 수동으로 해결한 다음 git add 그리고 git rebase --continue.
  11. 문제가 발생하면 리베이스를 중단할 수 있나요?
  12. 예, 사용할 수 있습니다 git rebase --abort 리베이스를 중지하고 이전 상태로 돌아갑니다.
  13. 커밋을 스쿼시하기 위해 Bash 스크립트를 사용하면 어떤 이점이 있나요?
  14. Bash 스크립트는 프로세스를 자동화하여 시간을 절약하고 수동 오류의 위험을 줄입니다.
  15. 리베이스에서 커밋을 자동으로 스쿼시하는 방법이 있나요?
  16. 예, 스크립트를 사용하여 리베이스 할 일 목록을 수정하면 됩니다. , 'pick'을 'squash'로 자동 변경할 수 있습니다.

Git 커밋 스쿼시 마무리

Git에서 커밋을 스쿼시하는 것은 깨끗하고 읽기 쉬운 프로젝트 기록을 유지하는 강력한 기술입니다. 대화형 리베이스를 사용하든 Bash 스크립트로 자동화하든 여러 커밋을 단일 커밋으로 결합하여 로그를 더 쉽게 관리할 수 있습니다. 충돌을 해결하고 리베이스를 중단하는 방법을 이해하면 Git 숙련도가 향상되어 발생하는 모든 문제를 처리할 수 있습니다. 이러한 명령과 방법을 익히면 버전 관리 방식이 크게 향상됩니다.