Skip to main content
파일, 헝크, 라인 단위로 골라 스테이지하고 커밋합니다.

워킹 카피 열기

커밋되지 않은 변경은 워킹 카피(Working copy) 패널에서 다룹니다. 그래프 맨 위의 커밋되지 않은 변경(Uncommitted changes) 행이나 우측 사이드바 맨 위의 워킹 카피 카드를 누르면 열립니다. 패널은 변경 파일을 상태별 섹션으로 나눕니다.
  • 충돌 파일(Conflicted) 은 충돌이 있을 때만 맨 위에 나타납니다.
  • 스테이지 안됨(Unstaged) 은 추적하지 않는 새 파일을 초록 + 배지로 표시합니다.
  • 스테이지됨(Staged) 은 다음 커밋에 포함될 변경을 담습니다.
스테이지 안됨스테이지됨 헤더에는 선택한 파일과 섹션 전체를 함께 다루는 분할 버튼이 하나씩 있습니다.
파일 안의 일부만 스테이지하면 한 파일이 양쪽 섹션에 동시에 나타납니다.
왼쪽에 커밋 그래프, 오른쪽에 워킹 카피 패널이 열린 화면. 워킹 카피에는 파일 8개가 있는 UNSTAGED 섹션과 2개가 있는 STAGED 섹션이 있고, 두 헤더에는 각각 Stage/Unstage 버튼과 그 옆의 chevron이 붙어 있으며, UNSTAGED 안의 새 파일 notes/reconciliation-draft.md만 초록 + 배지로 구분된다

목록과 트리 보기

파일 목록 위의 전환 버튼으로 목록 보기(전체 경로를 한 행에)와 트리 보기(폴더 계층으로 묶기)를 바꿉니다. 보기 방식과 접어 둔 폴더는 다시 열었을 때도 유지됩니다.

파일 단위로 스테이지하기

파일을 클릭하면 가운데에 diff 탭이 열립니다. 파일을 선택한 뒤 섹션 헤더의 스테이지 / 스테이지 해제 버튼을 누르면 결과가 곧바로 반영되고, 여러 파일을 선택하면 한 번에 적용됩니다.
파일 행에 마우스를 올렸을 때 나타나는 × 버튼은 변경 버리기(Discard)입니다. 누르면 변경이 사라집니다.

섹션 헤더의 액션

스테이지 안됨스테이지됨 헤더에는 분할 버튼이 하나씩 있고, 두 쪽이 겨냥하는 파일 범위가 다릅니다. 왼쪽 절반은 늘 같은 일만 하고 메뉴에서 마지막에 고른 항목을 기억하지 않습니다. 두 쪽의 대상 범위가 다릅니다. 마지막 선택을 기억하는 버튼은 파일 하나만 스테이지하려던 순간에 섹션 전체를 처리하는 사고를 만듭니다. 선택에 적용 가능한 파일이 없으면 왼쪽 절반은 비활성화되고, chevron은 어느 경우에도 누를 수 있습니다. 충돌 파일 헤더에는 액션이 없습니다.
모두 스테이지모두 스테이지 해제 는 섹션 전체를 대상으로 합니다. 선택이 필요하지 않습니다. sparse checkout에서는 체크아웃 패턴 밖의 엔트리가 삭제로 기록되지 않고 skip-worktree 표시를 그대로 유지합니다.
충돌이 남아 있는 동안 메뉴 항목은 비활성화되고 패널에 충돌을 먼저 해소하세요 가 표시됩니다. 섹션 전체를 스테이지하면 충돌 파일이 해소된 것으로 표시되고 머지 에디터를 건너뜁니다. 선택 기반 스테이지 / 스테이지 해제 는 그대로 동작합니다. 충돌이 아닌 파일은 계속 다룰 수 있습니다.

아주 많은 파일을 선택했을 때

수백 개를 선택하면 명령행 길이 제한에 맞춰 경로를 나눈 여러 번의 순차 호출로 Git에 전달됩니다.
  • 호출은 같은 인덱스에서 겹치지 않게 하나씩 차례로 실행됩니다.
  • 중간에 하나가 실패하면 그 뒤 호출은 시도하지 않습니다. 몇 개를 완료했는지 알림으로 알려 주고 남은 파일은 계속 선택되어 있습니다. 같은 선택으로 다시 시도하면 됩니다.
  • 마지막 커밋 수정 (Amend) 를 다시 끌 때의 복원도 같은 방식입니다. 중간에 멈추면 Amend는 켜진 채로 남으니 다시 끄면 멈춘 자리에서 이어집니다.
  • Git에 전달하기에 혼자서도 너무 긴 경로가 있으면 시작 전에 전체가 중단되고, 오류에 그 경로가 함께 표시됩니다.
이미 처리된 파일은 되돌리지 않습니다. 여러 번의 Git 호출을 한 트랜잭션으로 묶을 수 없고, 되돌리려면 최신 작업 트리를 다시 읽어야 해서 그사이 사용자가 만든 변경을 덮을 수 있습니다.

헝크와 라인 단위로 스테이지하기

파일을 클릭해 워킹 카피 diff를 엽니다.
1

헝크 Stage / Unstage

연속된 변경 덩어리 하나가 한 섹션입니다. 섹션의 아무 행에 마우스를 올리면 첫 행 오른쪽에 버튼이 나타납니다. 스테이지 안됨 diff에서는 StageDiscard, 스테이지됨 diff에서는 Unstage 입니다.
2

한 줄만 적용

변경 줄에 마우스를 올리면 줄번호 옆에 줄 스테이지(Stage line) / 줄 언스테이지(Unstage line) 버튼이 나타납니다. -old+new 가 한 수정으로 짝지어진 경우에는 두 행이 함께 적용됩니다.
스테이지하지 않은 워킹 카피 diff. 워크플로 YAML의 한 헝크에서 runs-on 한 줄이 빨강(−)으로 지워지고 strategy, matrix, target, runs-on 네 줄이 초록(+)으로 추가됐다
이미 스테이지한 워킹 카피 diff. Rust 파일의 기존 함수 아래에 상수 선언 두 줄이 초록(+)으로 추가된 작은 헝크가 보인다
라인 액션은 수정된 텍스트 파일의 워킹 카피 diff에서만 제공됩니다. 새 파일, 삭제나 이름 변경, 충돌, 바이너리와 LFS 파일에는 나타나지 않습니다. 공백 변경 무시 를 켜면 헝크와 라인 액션이 함께 사라집니다. 파일 단위로 처리하세요. 라인 단위 Discard는 없습니다.
core.safecrlf=fail 이 설정된 저장소에서는 줄바꿈이 혼합된 파일을 스테이지할 수 없고 CRLF would be replaced by LF in '<파일>' 오류가 표시됩니다. git add 도 같은 파일을 동일하게 거부하는 Git 표준 동작입니다. 파일을 LF 줄바꿈으로 저장해 정리하거나, git config core.safecrlf warn 으로 설정을 완화하세요.

커밋하기

워킹 카피 패널 상단의 커밋 폼. Summary (required) 입력란, Description 입력란, Amend last commit 체크박스, 초록 Commit 버튼이 차례로 놓여 있다
요약(Summary) 은 필수, 설명(Description) 은 선택이며 둘은 한 줄 띄워 하나의 메시지로 합쳐집니다. 커밋(Commit) 을 누르면 그래프가 새로 그려지고 새 커밋이 선택됩니다. 스테이지된 항목이 없거나 요약이 비어 있으면 버튼이 동작하지 않습니다.
커밋에는 스테이지된 변경만 포함됩니다. pre-commit 같은 Git hook이 설정돼 있으면 커밋 시 실행되며, hook이 거부하면 커밋이 실패합니다.