수색…


통사론

  • 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 를 지정하여 마커 [- , -] , {+ , +} 를 생략 할 수 있습니다. 차이를 표시하는 데 색상 코딩 만 사용됩니다.

git diff --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>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow