Git Stash -p: 특정 변경 사항만 선택적으로 Stash하는 고급 활용법

🤖 AI 추천

이 문서는 Git을 사용하여 작업 디렉토리를 깔끔하게 관리하고자 하는 모든 개발자에게 유용합니다. 특히 여러 기능을 동시에 작업하거나, 커밋하기 전에 특정 코드 변경 사항만 임시로 보관해야 하는 경우에 Git Stash -p (또는 --patch) 옵션을 통해 효율적으로 작업할 수 있습니다. 주니어 개발자부터 시니어 개발자까지 모두에게 실질적인 도움이 되는 고급 Git 활용 팁을 제공합니다.

🔖 주요 키워드

Git Stash -p: 특정 변경 사항만 선택적으로 Stash하는 고급 활용법

핵심 기술: git stash -p (또는 --patch)는 Git의 강력한 인터랙티브 스태싱 모드로, 개발자가 커밋되지 않은 변경 사항 중 특정 부분만을 선택적으로 Stash할 수 있게 하여 작업 흐름의 유연성과 정밀도를 높여줍니다.

기술적 세부사항:
* 선택적 Stash: 변경된 코드 덩어리(hunk) 단위로 Stash할지 말지를 결정할 수 있습니다.
* 변경 사항 분할 (Split Hunks): 하나의 hunk에 여러 변경 사항이 묶여 있을 때, s 옵션을 사용하여 이를 더 작은 단위로 분할하여 개별적으로 관리할 수 있습니다.
* 테스트 용이성: 특정 변경 사항만 임시로 제거하여 코드 테스트를 진행할 수 있습니다.
* 더욱 깔끔한 워킹 디렉토리: 불필요한 변경 사항을 남겨두지 않고 작업 디렉토리를 효율적으로 관리할 수 있습니다.
* --keep-index 옵션: 스테이징된(staged) 변경 사항을 그대로 유지한 채 나머지 변경 사항만 Stash할 때 유용합니다.
* git add -p와 결합: Staging도 인터랙티브하게 진행하고 나머지 변경 사항을 Stash하는 고급 워크플로우를 구축할 수 있습니다.
* 패치 파일 생성 및 적용: git stash show -p <stash_id> > fix.patch 명령으로 Stash 내용을 패치 파일로 공유하거나, git apply -R 등으로 Stash를 되돌릴 수 있습니다.
* 경로 필터링: -- '*.js'와 같은 경로 지정자를 사용하여 특정 파일 타입만 대상으로 Stash 작업을 수행할 수 있습니다.
* 설명 추가: save "<message>" 옵션으로 Stash에 이름을 붙여 관리 효율성을 높일 수 있습니다.
* Untracked 파일 포함: --include-untracked 옵션을 사용하여 새롭게 추가된 파일도 Stash할 수 있습니다.

개발 임팩트:
* 복잡한 변경 사항을 여러 개의 논리적인 단위로 나누어 관리할 수 있습니다.
* 버그 수정과 기능 개발을 동시에 진행할 때, 각 변경 사항을 명확히 구분하여 Stash하고 복원할 수 있습니다.
* 의도치 않은 변경 사항을 쉽게 격리하고 관리할 수 있어, 코드 리뷰나 디버깅 시간을 단축할 수 있습니다.
* 커밋 히스토리를 더욱 깔끔하고 논리적으로 유지하는 데 기여합니다.

커뮤니티 반응: (원문에 직접적인 커뮤니티 반응 언급은 없으나, Git 커뮤니티에서 git stash -p는 복잡한 상황에서 워킹 디렉토리를 관리하기 위한 필수적인 고급 기능으로 널리 알려져 있습니다.)

📚 관련 자료