Git School · FluxGit

파일 일부만 커밋하기

FluxGit ·

각 블록은 다른 경우이며 하나의 실행 스크립트가 아닙니다. 저장소에 맞는 경우를 선택하고 브랜치 이름, 경로와 VERIFIED_COMMIT을 바꾸세요. 중단 명령은 해당 작업이 진행 중일 때만 사용하며 두 대안을 모두 실행하지 마세요.

핵심 답변

Git은 인덱스의 내용을 커밋합니다. 수정만 스테이지하고 다른 편집은 작업 디렉터리에 남겨 별도 커밋으로 나눕니다.

예시와 전제 조건

예제는 한 파일의 수정과 디버그 출력입니다. 각각을 구분해 검토할 수 있는 텍스트 변경이어야 합니다.

변경 전에 상태 확인

git diff와 git diff --cached를 비교합니다. 전자는 미스테이지 변경을, 후자는 다음 커밋에 포함될 내용을 정확히 보여 줍니다.

git status --short
git diff
git diff --cached

참조나 별도 체크아웃 보존

변경을 스테이지해도 남은 편집은 지워지지 않습니다. 인덱스와 작업 디렉터리는 따로 확인할 수 있는 상태입니다.

첫 번째 절차

FluxGit에서 diff를 열고 수정의 Stage change를 선택합니다. 커밋 패널에서 디버그 출력이 여전히 미스테이지인지 확인하세요.

다른 결과를 의도적으로 선택

터미널에서는 git add -p로 hunk를 선택하거나 제외합니다. 필요하면 s로 나누거나 e로 패치를 편집할 수 있습니다.

git add -p -- app.py
git diff --cached

제한과 예외

FluxGit의 최소 단위는 hunk 안의 한 변경입니다. 한 변경이 여섯 줄이면 여섯 줄 전체를 스테이지합니다. 마우스로 임의의 줄 범위를 지정하는 방식은 아닙니다.

충돌과 정리

스테이지 해제는 파일을 유지하고, 폐기는 내용을 바꿉니다. FluxGit은 부분 폐기 전에 안전 스냅샷을 만듭니다. 두 작업은 다릅니다.

결과 확인

커밋 전 git diff --cached, 이후 git show를 확인합니다. git diff로 나머지 작업이 파일에 그대로 남았는지도 확인하세요.

git show --stat HEAD
git diff
git status --short

자주 묻는 질문

일반적인 비공유 커밋은 git reset --soft HEAD^로 내용을 인덱스에 돌릴 수 있습니다. 상태를 확인하고 공유 기록 재작성은 먼저 조율하세요.

FluxGit에서 작업 검토

Commit Studio는 diff와 메시지를 함께 표시합니다. 내용을 검토하면서 메시지를 작성하고 한 의도를 한 커밋에 담으세요.

Git 공식 문서

Git School · 1:47

Git에서 파일 일부만 커밋하기

같은 파일에 버그 수정과 디버그 출력이 있다면 수정만 스테이징하세요. Git의 스테이징 영역, FluxGit의 Stage change, git add -p를 설명합니다.

Git에서 파일 일부만 커밋하기
내레이션은 영어입니다. YouTube에서 11개 언어의 수동 자막을 사용할 수 있습니다. 이 대본은 한국어입니다.

YouTube에서 보기 — 새 탭에서 열림

테스트 저장소에서 녹화했습니다.

내레이션 대본 읽기
  1. 00:03 버그를 고쳤지만 같은 파일에 디버그 출력도 남겼습니다. 출력은 빼고 수정만 담은 깔끔한 커밋을 만들고 싶습니다.
  2. 00:11 FluxGit에서 연 app.py입니다. 변경이 두 개 있습니다.
  3. 00:17 Git은 폴더가 아니라 스테이징 영역을 커밋합니다. 처음에는 두 변경 모두 디스크에만 있습니다. Stage change는 수정만 스테이징 영역에 넣습니다. 커밋은 그 내용만 포함하고 디버그 출력은 커밋되지 않은 채 디스크에 남습니다.
  4. 00:36 파일을 엽니다. diff에 두 변경이 보이고 각각 Stage change 버튼이 있습니다.
  5. 00:43 수정의 Stage change를 누릅니다. 해당 변경만 스테이징되고 출력은 그대로 남습니다.
  6. 00:51 커밋 패널로 돌아오면 수정은 스테이징되어 있고 출력은 그렇지 않습니다.
  7. 00:56 메시지를 쓰고 커밋합니다.
  8. 01:06 새 커밋에는 수정만 들어 있습니다. 출력은 커밋되지 않은 채 디스크에 남아 있습니다.
  9. 01:13 마음이 바뀌었나요? 실행 취소로 커밋을 되돌립니다. 수정은 스테이징 영역으로 돌아가고 파일은 바뀌지 않습니다.
  10. 01:22 터미널에서는 git add -p를 사용합니다. Git이 변경마다 물으면 수정에는 yes, 출력에는 no라고 답한 뒤 커밋합니다.
  11. 01:33 요약: 파일 전체가 아닌 변경을 스테이징하세요. 커밋 하나에 목적 하나를 담고 실수했다면 실행 취소하세요. 다음은 마지막 커밋 수정입니다.

관련 절차

FluxGit 다운로드