Git에서 변경사항 단위(Hunk)로 스테이징하기

위에서 작성된 스테이징 방식(git add file)이 파일 단위라면, 여기서 언급되는 스테이징 방식은 작업의 변경사항 단위로 스테이징하는 방법이다.

하나의 파일 안에서도 변경한 부분이 몇 가지가 될 수 있는데, 이 때 git add file 을 사용하면 파일이 통째로 스테이징된다. 그러나 git add -p 를 사용하면 변경사항 단위로만 스테이징 할 수 있다. 더 편하고 더 분명하게 버전관리 할 수 있다고 생각된다.

이 때의 변경사항 단위를 Hunk라고 한다.

test 폴더를 만들어서 실습을 해보았다.

생성한 파일(test.html)에 세 줄의 코드를 추가하고, Hunk 명령어를 입력하였다.

1
$ git add -p

여기서 s 는 split을 의미한다. 세 줄을 한 꺼번에 스테이징하기 보다 더 세분화해서 스테이징하기 위해 split을 하는거다. split을 한 결과는 다음과 같다. git add -p 에서 응답할 수 있는 명령어는 아래 정리해두었다.

하나의 hunk가 3개의 hunk로 쪼개져서 각각 스테이징 할 수 있었다. 세 줄의 코드중 마지막 줄 코드만 스테이징 하지 않기로 했다.

다시 git add -p 을 입력해보니 아까 스테이징 하지 않은 한 줄의 코드만 스테이지 여부를 묻고, 나머지 코드는 스테이징 되었음을 확인할 수 있었다.

이처럼 git add -p 를 사용하면, 변경사항 단위로 더 세분화해서 스테이징 하는 것이 가능하다.

git add -p 에서 응답할 수 있는 명령어는 ? 을 입력하면 볼 수 있는데, 다음과 같다.

주로 쓰이는 명령어는 y, n, q 이다.

y : 해당 hunk를 스테이징한다.

n : 스테이징하지않고 건너뛴다.

q : add 과정을 종료한다.

e : 변경사항을 더 작게 쪼개는 명령어이다.