Git 가이드
Git add -p: 특정 라인을 준비하고 집중 커밋을 합니다.
관련되지 않은 두 가지 변경 사항이 하나의 파일에 포함되었습니다. 지금 수정 사항을 커밋하고 리팩터링은 나중을 위해 남겨두세요. 스테이징 영역, 패치 모드 및 GitTree의 라인 선택에 대한 실용적인 가이드입니다.
파일의 일부만 커밋하려면 `git add -p -- path/to/file`로 원하는 변경 사항을 준비하고 `git diff --cached`로 검토한 다음 커밋하세요. 나머지 편집 내용은 작업 파일에 유지됩니다. GitTree에서 diff 파일을 열고 변경된 라인을 선택한 다음 Stage Lines를 선택하여 동일한 종류의 집중 커밋을 준비합니다.
결제 유효성 검사 버그를 수정한 다음 동일한 구성 요소를 재구성하기 시작했다고 가정해 보겠습니다. 검토자는 완료되지 않은 리팩터링을 읽지 않고도 버그 수정을 이해할 수 있어야 합니다. 이 가이드에서는 이러한 변경 사항이 기록이 되기 전에 분리합니다. 애니메이션 예시에서는 macOS, Windows 및 Linux용으로 만든 클라이언트인 GitTree를 사용합니다. 부분 준비는 무료 계획에 속합니다. 현재 공식 빌드에는 로그인이 필요합니다.
작업 트리, 준비 영역 및 커밋: 무엇이 저장되나요?
| 장소 | 포함된 내용 | 검사 방법 |
|---|---|---|
| 작업 트리 | 현재의 파일 | 편집기에서 파일을 엽니다. |
| 인덱스/스테이징 영역 | 제안된 다음 스냅샷 | git diff --cached는 이를 HEAD와 비교합니다. |
| 머리 | 현재 커밋 | git show HEAD:path/to/file |
스테이징은 커밋이나 푸시가 아닌 선택 단계입니다. 파일은 부분적으로 준비될 수 있습니다. 색인은 하나의 버전을 보유하고 편집기에는 모든 편집 내용이 표시됩니다. 스테이징 후 다시 편집하면 스테이징된 버전이 자동으로 업데이트되지 않습니다. 커밋하기 전에 다시 검토하세요. 시각적 커밋 그래프는 커밋이 존재하면 기록을 검사하는 데 도움이 됩니다.
하나의 파일에 git add -p를 사용하는 방법
git status로 시작하고 이미 준비된 항목을 검사하세요. 패치 모드는 선택한 변경 사항을 기존 인덱스에 추가합니다. 이전 선택 항목은 제거되지 않습니다. 이 예에서는 src/checkout.ts를 추적된 텍스트 파일로 바꾼 다음 Git이 각 블록에 대해 요청할 때 유효성 검사 수정 사항만 수락합니다.
git status
git diff --cached
git diff -- src/checkout.ts
git add -p -- src/checkout.ts
git diff --cached
git diff -- src/checkout.ts
git commit -m "fix: validate checkout input"단계적 diff를 검토하고 의도한 변경 사항을 테스트한 후에만 최종 커밋을 실행하세요. git diff --cached는 커밋이 기록할 내용을 보여줍니다. plain git diff은 커밋되지 않은 상태로 남아 있는 항목을 보여줍니다. 이 작업 흐름에 대해 git commit -a를 사용하거나 git commit에 파일 경로를 제공하지 마십시오. 이러한 양식은 방금 준비한 부분 선택을 우회할 수 있습니다.
수정 사항과 리팩터링이 서로 가까우면 덩어리를 분할합니다.
덩어리(Hunk)는 컨텍스트가 있는 변경된 줄 근처의 블록입니다. 패치 모드는 수정 사항과 리팩터링을 함께 그룹화할 수 있습니다. s을 사용하여 Git에게 블록 분할을 요청하세요. 편집 내용을 자동으로 분리할 수 없는 경우 e는 패치 편집기를 열거나 시각적 줄 선택기를 사용하여 원하는 추가 및 제거를 선택하는 데 도움을 줄 수 있습니다.
| 열쇠 | 결정 |
|---|---|
y | 이 블록을 준비하세요 |
n | 이 블록을 스테이지되지 않은 상태로 둡니다. |
s | 가능하면 더 작은 블록으로 나누세요. |
e | 제안된 패치 편집 |
q | 나머지 블록 검토를 중지하세요. |
교체의 경우 제거된 줄과 해당 교체를 하나의 논리적 변경으로 간주합니다. 절반만 선택하면 편집기에서 본 적이 없는 코드가 생성될 수 있습니다. 고급 패치 편집은 선택 사항입니다. 단계적 결과를 설명할 수 없다면 단계를 해제하고 더 명확한 경계를 선택하세요. 집중된 커밋은 단순히 작을 뿐만 아니라 자체적으로 작동해야 합니다.
GitTree에서 특정 라인을 스테이지하는 방법
변경된 파일 열기
// WIP 행을 선택한 다음 Unstaged Files 아래에서 파일을 선택하여 차이점을 엽니다.
적절한 금액을 선택하세요
완전한 블록을 위해 Stage Hunk를 사용하거나 변경된 라인 옆에 있는 상자를 선택하십시오. Shift 키를 누른 채 클릭하면 범위가 선택됩니다.
선택한 라인 스테이지
선택 표시줄에서 Stage Lines를 선택합니다. 다른 편집 내용은 작업 파일에 남아 있습니다.
단계적 버전 검사
Staged Files에서 파일을 선택하고 차이점을 검토합니다. 선택 사항을 수정하려면 Unstage Hunk 또는 Unstage Lines를 사용하십시오.
하나의 일관된 변경 사항을 커밋합니다.
선택한 변경 사항을 설명하는 메시지를 작성하고 커밋합니다. 다음 커밋을 위해 나머지 편집 내용으로 돌아갑니다.

다운로드GitTree를 통해 혼합된 차이점을 검토하고 초점을 맞춘 커밋을 시각적으로 구축할 수 있습니다. 터미널과 함께 기존 저장소에서 사용할 수 있습니다. 둘 다 동일한 Git 준비 영역을 읽습니다.
편집 내용을 삭제하지 않고 변경 사항을 언스테이징
git restore --staged -- src/checkout.ts
# Or choose which staged blocks to remove:
git restore --staged -p -- src/checkout.ts이는 대체 명령입니다. --staged을 사용하면 복원 시 작업 파일이 아닌 색인이 변경됩니다. 커밋이 있는 저장소의 경우 일반적으로 준비된 콘텐츠를 HEAD로 재설정합니다. --staged가 없으면 복원 시 작업 편집 내용을 덮어쓸 수 있으므로 구별을 명확하게 유지하세요. 다음 커밋에 포함되는 내용만 변경하려면 GitTree에서 Discard가 아닌 Unstage를 선택하세요.
파일이 두 번 나타나거나 한 줄을 스테이지할 수 없는 이유
준비된 파일과 준비되지 않은 파일 모두 아래에 있는 파일은 일반적으로 중복 파일이 아니라 부분 준비 또는 이후 편집을 의미합니다. 패치 모드가 해당 콘텐츠를 제공하려면 추적되지 않은 새 텍스트 파일에 git add -N -- path/to/new-file이 필요할 수 있습니다. 바이너리 파일에는 일반적인 텍스트 덩어리가 없습니다. GitTree는 또한 이름 바꾸기, LFS 포인터 및 하위 모듈 변경을 전체 파일 작업으로 단계화합니다. 공백이 숨겨져 있는 경우 공백 전용 변경 사항을 선택하기 전에 이를 표시하세요.
diff를 연 후 편집자나 포맷터가 파일을 변경하면 GitTree는 오래된 줄 선택을 거부할 수 있습니다. 차이점을 새로 고치고 다시 선택하세요. 더 적은 줄 수에 도달하기 위해 밀접하게 결합된 변경 사항을 분할하지 마십시오. 작업이 중단되는 경우 미완성 작업을 숨겨두세요; 이미 커밋된 혼합 기록에 대해서는 대화형 리베이스 가이드를 검토하세요.
편집자의 파일뿐만 아니라 준비 중인 커밋을 테스트하세요.
일반 테스트 명령은 아직 단계화되지 않은 편집 내용을 포함하는 작업 파일에 대해 실행됩니다. 테스트를 통과한다고 해서 부분 커밋이 완료되었음을 증명하는 것은 아닙니다. 중요한 분할의 경우 첫 번째 로컬 커밋을 만든 다음 별도의 클린 체크아웃 또는 작업 트리에서 커밋된 스냅샷을 검사하고 테스트하세요. 분기를 공유하기 전에 실패할 경우 누락된 종속성을 추가하세요. 작업 트리 가이드에서는 별도의 폴더가 해당 버전을 구분하는 데 어떻게 도움이 되는지 설명합니다.
자주 묻는 질문
git add -p는 무엇을 합니까?
이를 통해 인덱스에 추가할 단계되지 않은 변경 블록을 선택할 수 있습니다. 커밋을 생성하거나 작업을 업로드하지 않습니다.
파일의 몇 줄만 커밋할 수 있나요?
예. 변경 사항을 준비하고 git diff --cached를 검사한 후 -a 또는 파일 경로 인수 없이 커밋하세요. 다른 편집 내용은 커밋되지 않은 상태로 유지됩니다.
스테이징을 해제하면 내 편집 내용이 삭제되나요?
git Restore --staged를 사용하여 Unstaging을 수행하면 인덱스가 변경되고 작업 파일은 그대로 유지됩니다. 작업 파일을 삭제하거나 복원하는 것은 다른 작업입니다.
Git이 내 덩어리를 분할할 수 없는 이유는 무엇입니까?
주변 수정사항에는 자동으로 분할될 만큼 변경되지 않은 컨텍스트가 충분하지 않을 수 있습니다. 패치를 수동으로 검토하거나 라인 선택을 사용하여 종속 추가 및 제거를 함께 유지하십시오.
GitTree에서는 부분 스테이징이 무료인가요?
예. 파일, 덩어리 및 라인 스테이징은 개인 저장소를 포함하여 무료 플랜에 있습니다. 현재 공식 빌드에는 로그인이 필요합니다.
출처
다른 제품에 대한 주장은 2026년 10월 28일의 공식 페이지에서 확인되었습니다. 가격과 기능은 변경됩니다. 공급업체 페이지가 진실의 원천입니다.