Critical! | Important | Nice To Have |
---|---|---|
Reading Diffs | ||
Git Diff Basics | ||
Diffing Branches | ||
Diffing Commits | ||
Diffing Specific Files | ||
Git diff --staged |
git diff는 깃에서의 변경 사항들을 보여주는 명령이다.
그래서 주어진 저장소안에 아주 많은 상황에 대해 변경된 사항을 파악해 보기를 원한다.
(커밋들 사이 그리고 워킹 디렉토리들 간의 변경사항, 스테이지 영역과 워킹 디렉토리에서 변한 것은 무엇인지, 커밋을 실행하면서 두 브랜치 간 또는 두 개의 다른 파일들 사이에 무엇이 변했는지.. 등 이런 모든 다양한 시나리오에 대해 이 변경사항을 비교해 보고 싶을 수 있다.)
- git diff명령은 강력하지만, 처음 사용할 때는 약간 어려울 수 있다.
- git status나 git log처럼 아무런 영향도 미치지 않는다.
- 순수하게 정보만 주는 명령어이다.
△위에 있는 두 파일을 비교하는 것이다.
△위에 있는 두 파일을 비교하는 것이다, 그 밑엔 다른 파일 비교
△ 메타데이터, 이해할 필요는 없다. 비교하는 파일의 메타데이터.
각 파일들은 자기만의 해시를 가지고 있다.
△ 마커
△ 바뀐 부분을 간략히 보여준다
△ Chunk(덩어리)
△ -3,4 는 파일a를 나타내고, +3,5는 파일b를 나타낸다.
이 숫자들은 얼마나 많은 라인이 이 덩어리(Chunk)에서 추출되었는지 말해준다.
3,4는 라인3부터 4줄이 나온거고
3,5는 라인3부터 5줄이 나왔다는 뜻이다.
△ 즉, 위와 같은 형식이다.
△ 각 색을 추가 할 때마다 커밋을 해 준다.
△ 커밋 상황.
△ 워킹 디렉토리와 스테이징 디렉토리를 비교해 준다.
△ 퍼플을 지우고, indigo를 입력한 다음 저장하면 이렇게 된다.
a는 스테이징 영역에 있는 것이고, b는 워킹디렉토리에 있는 것이다.
+indigo라고 되어 있는 것은, 새로운 것을 의미하는 것이 아니라, 파일 b에서 온 것을 의미한다
△ git HEAD를 실행하면, HEAD가 참조했던 그 이후에 변경했던 모든 것을 보게 된다.
△ 넘버 파일을 추가하고 add한 뒤에 변화를 살펴본다.
△ colors에 violet을 추가 한 뒤에 git diff HEAD 실행.
정리하자면, git diff는 등록되지 않은 모든 변경사항을, git diff HEAD는 마지막 커밋이 실행된 이후의 모든 변경사항을 비교한다.
(git diff는 스트이징에리어랑 워킹디렉토리를 비교)