수색…
통사론
-
git diff [options] [<commit>] [--] [<path>…]
-
git diff [options] --cached [<commit>] [--] [<path>…]
-
git diff [options] <commit> <commit> [--] [<path>…]
-
git diff [options] <blob> <blob>
-
git diff [options] [--no-index] [--] <path> <path>
매개 변수
매개 변수 | 세부 |
---|---|
-p, -u, - 패치 | 패치 생성 |
-s, --no-patch | diff 출력을 억제하십시오. git show 와 같은 명령을 사용하면 기본적으로 패치를 표시하거나 --patch 의 결과를 취소 할 수 있습니다. |
--노골적인 | 원시 형식으로 diff 생성 |
--diff-algorithm = | 비교 알고리즘을 선택하십시오. 변형은 다음과 같습니다 : myers , minimal , patience , histogram |
--개요 | 생성, 이름 변경 및 모드 변경과 같은 확장 헤더 정보의 압축 요약을 출력합니다. |
- 이름 - 전용 | 변경된 파일의 이름 만 표시 |
- 이름 - 상태 | 변경된 파일의 이름 및 상태 표시 가장 일반적인 상태는 M (수정 됨), A (추가됨) 및 D (삭제됨)입니다. |
--검사 | 변경 사항이 충돌 마커 또는 공백 오류를 발생시키는 경우 경고합니다. 공백 오류로 간주되는 것은 core.whitespace 구성에 의해 제어됩니다. 기본적으로 후행 공백 (공백으로 만 구성된 행 포함)과 행의 첫 들여 쓰기 안에 탭 문자가 바로 뒤에 오는 공백 문자는 공백 오류로 간주됩니다. 문제가 발견되면 0이 아닌 상태로 종료됩니다. --exit-code와 호환되지 않습니다. |
- 전체 - 색인 | 처음 몇 개의 문자 대신에, 패치 포맷 출력을 생성 할 때 "인덱스"라인에 전체 이미지 전후 이미지 BLOB 객체 이름을 표시하십시오 |
- 이진 | --full-index 와 더불어, git apply 와 함께 적용될 수있는 바이너리 diff를 출력한다. |
-a, --text | 모든 파일을 텍스트로 취급하십시오. |
--색깔 | 색상 모드를 설정하십시오. diff를 less로 파이프하고 싶다면 git의 채색을 유지하려면 --color=always 사용하십시오. |
작업 분기의 차이점 표시
git diff
이것은 표시됩니다 unstaged 그 전에 커밋에서 현재 분기에 변경. 인덱스와 관련된 변경 사항 만 표시하므로 다음 커밋에 추가 할 수 있는 내용이 표시되지만 그렇지 않은 내용이 표시됩니다. 이러한 변경 사항을 추가 (단계)하려면 git add
사용할 수 git add
.
파일이 준비되었지만 준비된 후에 수정 된 경우 git diff
는 현재 파일과 준비된 버전 간의 git diff
을 표시합니다.
준비 파일의 차이 표시
git diff --staged
그러면 이전 커밋과 현재 준비된 파일 사이의 변경 사항이 표시됩니다.
참고 : 다음 명령을 사용하여 동일한 작업을 수행 할 수도 있습니다.
git diff --cached
--staged
또는에 대한 동의어입니다
git status -v
어떤 status
명령의 자세한 설정을 트리거합니다.
스테이지 및 언 스테이지 변경 사항 표시
모든 단계적 및 변경되지 않은 변경 내용을 표시하려면 다음을 사용하십시오.
git diff HEAD
참고 : 다음 명령을 사용할 수도 있습니다.
git status -vv
차이점은 후자의 출력이 실제로 커밋을 위해 준비된 변경 사항과 그렇지 않은 변경 내용을 알려주는 것입니다.
두 커밋 사이의 변경 내용 표시
git diff 1234abc..6789def # old new
예 : 마지막 3 가지 커밋에서 변경된 사항 표시 :
git diff @~3..@ # HEAD -3 HEAD
참고 : 두 점 (..)은 선택 사항이지만 선명도가 추가됩니다.
이렇게하면 트리에있는 위치와 상관없이 커밋 간의 텍스트 차이가 표시됩니다.
meld를 사용하여 작업 디렉토리의 모든 수정 사항보기
git difftool -t meld --dir-diff
작업 디렉토리가 변경 될 것입니다. 또는,
git difftool -t meld --dir-diff [COMMIT_A] [COMMIT_B]
2 개의 특정 커밋 간의 차이점을 보여줍니다.
특정 파일 또는 디렉토리의 차이 표시
git diff myfile.txt
지정한 파일 ( myfile.txt
)의 이전 커밋과 아직 준비되지 않은 로컬 수정 버전 사이의 변경 사항을 표시합니다.
이것은 디렉토리에도 적용됩니다.
git diff documentation
위의 내용은 지정된 디렉토리 ( documentation/
)에있는 모든 파일의 이전 커밋과 아직 준비되지 않은 이러한 파일의 로컬 수정 버전 사이의 변경 내용을 보여줍니다.
주어진 커밋의 파일 버전과 로컬 HEAD
버전의 차이점을 표시하려면 다음과 비교할 커밋을 지정할 수 있습니다.
git diff 27fa75e myfile.txt
또는 두 개의 별도 커밋 사이의 버전을보고 싶다면 다음을 수행하십시오.
git diff 27fa75e ada9b57 myfile.txt
해시 ada9b57
의해 지정된 버전과 지점 my_branchname
의 최신 커밋을 my_changed_directory/
라는 상대 디렉토리에만 표시하려면 다음을 수행하십시오.
git diff ada9b57 my_branchname my_changed_directory/
긴 줄의 단어 diff보기
git diff [HEAD|--staged...] --word-diff
변경된 행을 표시하는 대신 줄 내의 차이점을 표시합니다. 예를 들어 다음과 같이하지 마십시오.
-Hello world
+Hello world!
전체 행이 변경된 것으로 표시된 경우 word-diff
는 출력을 다음과 같이 변경합니다.
Hello [-world-]{+world!+}
--word-diff=color
또는 --color-words
를 지정하여 마커 [-
, -]
, {+
, +}
를 생략 할 수 있습니다. 차이를 표시하는 데 색상 코딩 만 사용됩니다.
공통 조상을 포함한 3 방향 병합보기
git config --global merge.conflictstyle diff3
충돌하는 섹션의 일반적인 형식 대신 두 파일을 보여주는 diff3
스타일을 기본값으로 설정합니다.
<<<<<<< HEAD
left
=======
right
>>>>>>> master
원본 텍스트를 포함하는 추가 섹션이 포함됩니다 (공통 조상을 형성 함).
<<<<<<< HEAD
first
second
|||||||
first
=======
last
>>>>>>> master
이 형식을 사용하면 병합 충돌을 쉽게 이해할 수 있습니다. 이 경우 로컬에서 second
가 추가되고 원격은 first
에서 last
변경되며 다음과 같이 해결됩니다.
last
second
동일한 해상도가 기본값을 사용하는 것이 훨씬 더 어려웠을 것입니다.
<<<<<<< HEAD
first
second
=======
last
>>>>>>> master
현재 버전과 마지막 버전 간의 차이점 표시
git diff HEAD^ HEAD
그러면 이전 커밋과 현재 커밋 간의 변경 사항이 표시됩니다.
Diff UTF-16 인코딩 된 텍스트 및 이진 plist 파일
이 파일들을 git가 어떻게 비교해야 하는지를 지정함으로써 UTF-16으로 인코딩 된 파일 (현지화 파일 oos iOS 및 macOS는 예제)을 비교할 수 있습니다.
~/.gitconfig
파일에 다음을 추가하십시오.
[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"
iconv
는 다른 인코딩 을 변환 하는 프로그램입니다.
그런 다음 저장소를 사용하려는 저장소의 루트에서 .gitattributes
파일을 편집하거나 작성하십시오. 또는 ~/.gitattributes
편집 ~/.gitattributes
.
*.strings diff=utf16
git diffs 전에 .strings
끝나는 모든 파일을 변환합니다.
텍스트로 변환 할 수있는 다른 파일에 대해서도 비슷한 작업을 수행 할 수 있습니다.
바이너리 plist 파일의 경우 .gitconfig
를 편집합니다.
[diff "plist"]
textconv = plutil -convert xml1 -o -
및 .gitattributes
*.plist diff=plist
분기 비교
new
팁과 original
의 팁 사이의 변경 사항 표시 :
git diff original new # equivalent to original..new
모든 변경보기 new
가에서 분기 이후 original
:
git diff original...new # equivalent to $(git merge-base original new)..new
매개 변수 하나만 사용
git diff original
~에 해당합니다.
git diff original ..HEAD
두 가지 분기 간 변경 사항 표시
git diff branch1..branch2
패치와 호환되는 diff 생성
패치를 사용하여 적용하려면 diff가 필요할 때가 있습니다. 정규 git --diff
가 작동하지 않습니다. 대신 다음을 시도하십시오.
git diff --no-prefix > some_file.patch
그런 다음 다른 곳에서 되돌릴 수 있습니다.
patch -p0 < some_file.patch
두 가지 커밋 또는 분기 간의 차이점
두 지점 간의 차이점을 보려면
git diff <branch1>..<branch2>
두 지점 간의 차이점을 보려면
git diff <commitId1>..<commitId2>
현재 분기가있는 diff를 보려면
git diff <branch/commitId>
변경 요약을 보려면
git diff --stat <branch/commitId>
특정 커밋 후에 변경된 파일을 보려면
git diff --name-only <commitId>
분기와 다른 파일을 보려면
git diff --name-only <branchName>
특정 커밋 후에 폴더에서 변경된 파일을 보려면
git diff --name-only <commitId> <folder_path>