깨끗한 git 커밋 기록을 유지하기 위한 팁

솔루션 1:



기능에 대해 작업 중이고 마스터에서 체크아웃하여 기능 분기 F1을 생성했다고 가정해 보겠습니다. 기능 브랜치 F1 에서 작업하는 동안 여러 중간 커밋을 만들었습니다. 그러나 커밋 기록을 확인하면 이러한 커밋 중 일부가 중복됨을 알 수 있습니다. 이 경우 커밋을 스쿼시할 수 있습니다. 즉, 여러 커밋을 결합하여 하나의 커밋으로 만들 수 있습니다.

아래는 스쿼시 전후의 기능 분기 커밋 기록입니다.


대화식 리베이스를 사용하여 마지막 X 커밋을 스쿼시하는 명령은 다음과 같습니다.

git rebase -i HEAD~[X]


커밋 스쿼시는 기능 브랜치를 마스터 브랜치에 병합하려는 경우에도 유용합니다. 스쿼싱을 통해 모든 중복 커밋을 제거할 수 있으며 기능 브랜치를 마스터에 병합한 후 git 커밋 기록이 깨끗해집니다.

스쿼싱의 장점:



자식 기록은 깨끗하게 유지됩니다

스쿼싱의 단점:



자세한 분기 기록은 더 이상 사용할 수 없습니다.

두 번째 솔루션으로 이동하기 전에 git merge와 git rebase의 차이점을 이해합시다.

자식 병합 VS 자식 리베이스



git merge와 git rebase는 기능 브랜치에서 메인(마스터) 브랜치로 코드를 병합하는 데 사용됩니다.


자식 병합

git merge 명령을 사용하여 기능 브랜치에서 마스터로 코드를 병합하면 git은 내 기능 브랜치의 모든 변경 사항을 가져오고 내 커밋 위에 내 기능의 모든 변경 사항을 포함하는 병합 커밋이라는 특수 커밋을 만듭니다. 분기하고 이 병합 커밋을 마스터 분기 위에 놓습니다. git commit 그래프는 다음과 같습니다.


마스터 브랜치에서 fetaure_branch를 병합하는 명령은 다음과 같습니다.

git checkout master
git merge feature_branch


솔루션 2로 git rebase를 이해하자

해결 방법 2:



깨끗한 커밋 기록을 유지하려면 git merge 대신 git rebase를 수행하십시오. rebase가 할 일은 기능 브랜치에서 모든 커밋을 가져 와서 마스터 커밋 위로 이동하는 것입니다. 커밋의 그래프 구조는 다음과 같습니다.


마스터 분기로 fetaure_branch를 리베이스하는 명령은 다음과 같습니다.

git checkout master
git rebase feature_branch


git rebase의 장점 :



메인 브랜치의 커밋 히스토리를 깨끗하게 유지하므로 추적이 쉬워집니다.

git rebase의 단점 :



자세한 분기 기록은 더 이상 사용할 수 없습니다.

따라서 커밋 스쿼시를 사용한 다음 마스터로 리베이스하면 커밋 기록을 깨끗하고 추적 가능하게 유지할 수 있습니다.

좋은 웹페이지 즐겨찾기