2022. 7. 27. 21:58ㆍGIT
diff 명령어는 커밋 간 차이를 확인한다.
보통 리눅스나 macOS 같은 유닉스 계열의 운영 체제는 diff 명령어가 있다.
깃 또한 초기 시작은 리눅스 커널을 개발하려는 것이어서 유사한 기능을 하는 diff 명령어가 있다.
파일 간 차이
깃의 장점은 파일들의 수정 이력을 커밋이라는 형태로 구분할 수 있다는 것이다.
파일 수정이란 파일 내용 일부가 수정, 추가, 삭제되는 것을 의미한다.
diff 기능으로 파일의 수정 및 변경 내역을 쉽게 파악할 수 있다.
워킹 디렉토리 vs 스테이지 영역
add 명령어로 파일을 등록하지 않은 경우, 워킹 디렉토리와 스테이지 영역 간 변경 사항을 비교 할 수 있다.
index.html 파일의 코드 일부를 추가하였다.
$ git diff
워킹 디렉토리 내용과 스테이지 내용의 차이를 출력해준다.
index.html 파일이 수정되어서 unstage 상태인 파일로 스테이지 영역에 있다.
워킹 디렉토리에 있는 index.html 파일은 수정되어 스테이지 영역에 있는 index.html 파일 내용과 차이를 출력해준다.
수정된 index.html 파일을 등록했더니 워킹 디렉토리와 스테이지간 내용 차이가 없는 것을 볼 수 있다.
커밋 간 차이
스테이지 영역에 있는 수정된 파일을 아직 커밋하지 않았으면 최신 커밋과 변경 내용을 비교하여 볼 수 있다.
git diff HEAD
워킹 디렉토리와 마지막 커밋 내용을 비교한다.
※ HEAD는 마지막 커밋을 가지고 있는 포인터다.
index.html 파일에서 코드를 추가하고 스테이지 영역에 등록한 상태이다.
여기서 워킹 디렉토리에 있는 index.html 파일에 코드 일부를 삭제했다.
git status로 상태를 확인했을 때 수정된 파일이 두 개를 볼 수 있다.
커밋을 할 수 없는 상태면 빨간색, 커밋을 할 수 있는 상태면 녹색으로 표시되는 것도 볼 수 있다.
녹색으로 표시된 파일을 보면 추가된 코드이고 빨간색으로 표시된 파일을 보면 추가하고 이후에 삭제한 코드이다.
git diff로 워킹 디렉토리와 스테이지 내용 비교를 했을 때 이미 추가된 코드는 등록을 한 상태이기 때문에
삭제된 부분만 표시가 된 것을 확인할 수 있다.
git diff HEAD로 워킹 디렉토리와 최신 커밋 내용을 비교해볼 때 수정한 코드를 커밋하지 않았기 때문에 수정된 모든 부분이 표시된 것을 볼 수 있다.
여기서 git add index.html로 최신 index.html 파일을 스테이지 영역에 등록함으로써 커밋 준비를 완료 할 수 있다.
소스트리에서 간단하게 변경 이력 확인하기
소스트리 파일상태 탭에서 수정된 파일을 클릭해보면 추가되면 녹색, 삭제되면 빨간색으로 표시해준다.
diff 내용을 추가하여 커밋
커밋 메시지를 작성할 때 -v 옵션을 같이 사용하면 vi 에디터에서 diff 내용을 추가할 수 있다.
vi 에디터에 diff 내용이 추가된 상태이다.
git show 명령어로 로그 상세정보에 diff 내용이 추가된 것을 확인할 수 있다.
작은 단위로 코드를 수정하고 커밋 하는 것이 한 번에 많은 코드를 수정한 이후에 커밋하는 것보다 검토하기 쉽고 오류 찾기 쉬울 것 같다.
'GIT' 카테고리의 다른 글
[GIT] 깃허브 서버 준비 (0) | 2022.07.31 |
---|---|
[GIT] 서버 저장소 (0) | 2022.07.31 |
[GIT] 커밋 로그 (0) | 2022.07.27 |
[GIT] 커밋 아이디 (0) | 2022.07.27 |
[GIT] 메시지가 없는 빈 커밋 (0) | 2022.07.27 |