Git 정리 - 버전 관리 - diff

'Git' 시리즈Git 정리 - 버전 관리 - diff

mildsalmon

흔치않고, 진귀하다.

Sign in to view email

변경 사항 확인하기 (git diff)

작업 트리에 있는 파일과 스테이지에 있는 파일을 비교, 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교한다. 수정한 파일을 커밋하기 전에 최종적으로 검토할 수 있다.

파일이 수정되지 않으면, git diff를 입력해도 아무 것도 안뜬다.

작업 트리와 스테이지에 있는 파일 비교 (git diff)

파일을 하나 만들어서 스테이지에 올렸다. status에는 커밋을 하라며 수정된 파일을 초록색으로 보여준다.

스테이지에 올라간 파일을 수정했다. status를 입력하면 test1.txt파일이 스테이징되지 않았다, 커밋할 수 있다고 나온다. 이 상태에서 수정 내역을 알고 싶다면 git diff를 사용한다.

git diff

스테이지와 저장소에 있는 파일 비교 (--staged)

저장소에 저장된 내역과 스테이지에 저장된 내역을 비교한다.

git diff --staged
git diff --cached

지금까지 진행 상황을 그림으로 그려보면 이렇다.

뭔가 이상함

그리고 뭔가 이상한걸 발견했다. 처음에 책에 나온대로 실습을 잘못해서인지. 파일을 커밋하고, 작업 트리에서 수정을 했다. 그리고 diff를 입력하니까. 저장소에 저장된(커밋된) 파일과 작업트리에 저장된(스테이지에 올리지 않은) 파일을 diff한 결과를 보여준다.

그림으로 표현하면 이렇게 된다.

해결

찾아보니까

git diff HEAD가 있는데. tracked files을 비교한다. 그래서 untracked files을 하나 만들고 diff를 해보니 untracked files은 비교하지 않았다. 당연한 이야기겠지만.(비교 대상이 없으니까) 작업트리에서 변경한 파일과 비교할 파일이 스테이지에 없으면 저장소에 저장된 파일과 비교하는 것 같다.

git diff HEAD

수정된 글자만 색 옵션주기 (--color-words)

diff는 한 글자만 수정이 되어도 수정된 줄을 전부 표시한다. 이렇게 되면 어느 부분에서 수정되었는지 확실하게 알기 힘들다. 수정된 부분을 확실히 알고 싶으면 --color-words를 사용한다.

git diff --color-words

좀 더 명시적으로 표시하기 (--word-diff)

--color-words보다 좀 더 확실하게 구분하고 싶다면.

git diff --word-diff

마치며

다음 챕터는 git checkout에 관해 글을 써보겠습니다.

참고문헌

[Git] git diff 명령어를 통한 변경 내용 보기, "https://dololak.tistory.com/308", [코끼리를 냉장고에 넣는 방법]

git-diff Documentation, "https://git-scm.com/docs/git-diff", [git]

Git - diff 사용하기, "http://hochulshin.com/git-diff/", [Keep learning and keep sharing]

git diff 에서 변경된 부분을 더 명확하게 보는 방법, "https://blog.outsider.ne.kr/1011", [Outsider's Dev Story]

이고잉, 고경희, 『Do it! 깃&깃허브 입문』 이지스퍼블리싱(2019)

작성된 댓글이 없습니다!
로그인된 사용자만 댓글을 작성할 수 있습니다.