Git의 고급 개념: 강력한 기능 및 기술 탐색

Rebasing

리베이스를 사용하면 커밋 기록을 수정하여 한 분기의 변경 사항을 다른 분기로 통합할 수 있습니다. 소스 분기에서 대상 분기로 커밋을 재생합니다. 결과적으로 보다 깨끗하고 선형적인 커밋 기록이 생성됩니다.

예: 라는 기능 브랜치가 있고 브랜치 feature-branch 의 최신 변경 사항을 통합하려고 한다고 가정해 보겠습니다 main. 다음 명령을 사용할 수 있습니다.

git checkout feature-branch  
git rebase main  

이렇게 하면 main 브랜치 의 커밋이 feature-branch. 리베이스 프로세스 중에 모든 충돌을 해결해야 합니다.

 

Stashing

스태싱을 사용하면 커밋할 준비가 되지 않은 현재 변경 사항을 저장하고 일시적으로 깨끗한 작업 디렉토리로 되돌릴 수 있습니다. 이는 현재 작업 중인 변경 사항을 커밋하지 않고 다른 분기로 전환하거나 다른 기능에 대해 작업해야 할 때 유용합니다.

예: 기능 분기에서 작업 중이고 일부 변경을 수행했지만 다른 분기로 전환해야 한다고 가정해 보겠습니다. 다음 명령을 사용하여 변경 사항을 숨길 수 있습니다.

git stash

새 분기로 전환한 후 다음을 사용하여 숨겨진 변경 사항을 적용할 수 있습니다.

git stash apply

 

Git Hooks

Git Hooks 사전 커밋, 사후 커밋, 사전 푸시 등과 같은 특정 Git 이벤트에 의해 트리거되는 스크립트입니다. 이를 통해 특정 작업을 자동화하거나 워크플로에서 특정 규칙을 적용할 수 있습니다.

예: 커밋하기 전에 코드에서 linter를 실행한다고 가정합니다. linter를 트리거하고 Linting 오류가 있는 경우 커밋을 방지하는 커밋 전 후크 스크립트를 만들 수 있습니다.

 

Git Submodule

Git Submodule 다른 Git 리포지토리를 기본 리포지토리 내의 하위 디렉터리로 포함할 수 있습니다. 이는 외부 라이브러리나 구성 요소에 의존하는 프로젝트가 있을 때 유용합니다.

예: 특정 라이브러리가 필요한 프로젝트가 있습니다. 리포지토리에서 라이브러리의 코드를 복제하는 대신 하위 모듈로 추가할 수 있습니다. 이렇게 하면 라이브러리 코드를 별도로 유지하고 필요할 때 쉽게 업데이트할 수 있습니다.

 

Git Revert and Git Reset

Git Revert 원래 커밋의 변경 사항을 취소하는 새 커밋을 생성하여 이전 커밋을 취소합니다. Git Reset 반면에 분기 포인터를 다른 커밋으로 이동하여 커밋 기록에서 커밋을 효과적으로 버릴 수 있습니다.

예: 마지막 커밋을 실행 취소하려면 를 사용하여 git revert HEAD 마지막 커밋에서 변경된 내용을 실행 취소하는 새 커밋을 만들 수 있습니다. 마지막 커밋을 완전히 삭제하려면 git reset HEAD~1 분기 포인터를 한 커밋 뒤로 이동하는 데 사용할 수 있습니다.

 

Git의 이러한 고급 개념은 리포지토리를 효과적으로 관리할 수 있는 강력한 기능을 제공합니다. 사용 방법과 적용 시기를 이해하면 Git 워크플로우와 프로젝트 관리가 크게 향상됩니다.