English프랑스어스페인어

온웍스 파비콘

git-diff-index - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 git-diff-index를 실행하세요.

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 git-diff-index 명령입니다.

프로그램:

이름


git-diff-index - 트리를 작업 트리 또는 인덱스와 비교

개요


자식 차이점 지수 [-m] [--캐시됨] [ ] [ ...]

기술


트리 개체에서 발견된 블롭의 내용과 모드를 해당 개체와 비교합니다.
추적된 파일은 작업 트리에 있거나 인덱스에 해당 경로가 있습니다. 언제
인수가 있으면 해당 패턴과 일치하는 경로만 비교합니다. 그렇지 않으면 모두
추적된 파일을 비교합니다.

옵션


-p, -u, --패치
패치 생성(패치 생성 섹션 참조).

-s, --패치 없음
diff 출력을 억제합니다. 패치를 표시하는 git show와 같은 명령에 유용합니다.
default, 또는 --patch의 효과를 취소합니다.

-유 , --통합=
다음을 사용하여 diff 생성 일반적인 세 ​​가지 대신 컨텍스트 라인. -p를 의미합니다.

--노골적인
원시 형식으로 diff를 생성합니다. 이것이 기본값입니다.

--원시 패치 포함
-p --raw의 동의어입니다.

--최소한
가능한 가장 작은 diff가 생성되도록 추가 시간을 할애하십시오.

--인내심
"patience diff" 알고리즘을 사용하여 diff를 생성합니다.

--히스토그램
"histogram diff" 알고리즘을 사용하여 diff를 생성합니다.

--diff-algorithm={인내|최소|히스토그램|마이어스}
diff 알고리즘을 선택합니다. 변형은 다음과 같습니다.

기본, 마이어스
기본 탐욕 diff 알고리즘. 현재 이것은 기본값입니다.

최소의
가능한 가장 작은 diff가 생성되도록 추가 시간을 할애하십시오.

인내
패치를 생성할 때 "patience diff" 알고리즘을 사용하십시오.

막대 그래프
이 알고리즘은 인내 알고리즘을 확장하여 "발생 빈도가 낮은 공통
강요".

예를 들어 diff.algorithm 변수를 기본값이 아닌 값으로 구성하고
기본 것을 사용하려면 --diff-algorithm=default 옵션을 사용해야 합니다.

--stat[= [, [, ]]]
diffstat를 생성합니다. 기본적으로 필요한 만큼의 공간이
파일 이름 부분, 나머지는 그래프 부분입니다. 최대 너비는 터미널로 기본 설정됨
너비 또는 터미널에 연결되지 않은 경우 80열이며 다음으로 재정의할 수 있습니다. .
파일 이름 부분의 너비는 다른 너비를 지정하여 제한할 수 있습니다.
쉼표 뒤에. 그래프 부분의 너비는 다음을 사용하여 제한할 수 있습니다.
--stat-그래프-폭= (통계 그래프를 생성하는 모든 명령에 영향을 미침) 또는
설정 diff.statGraphWidth= (git format-patch에는 영향을 주지 않음). 제공함으로써
세 번째 매개변수 , 출력을 첫 번째로 제한할 수 있습니다. 라인, 따라
로 ... 더 있으면.

이러한 매개변수는 --stat-width=를 사용하여 개별적으로 설정할 수도 있습니다. ,
--stat-이름-폭= 그리고 --stat-count= .

--numstat
--stat와 유사하지만 추가 및 삭제된 줄 수를 십진법으로 표시하고
약어가 없는 경로 이름으로, 기계에 더 친숙하게 만듭니다. 바이너리 파일의 경우,
0 0이라고 말하는 대신 XNUMX개를 출력합니다.

--shortstat
수정된 총 수를 포함하는 --stat 형식의 마지막 줄만 출력합니다.
파일, 추가 및 삭제된 줄 수.

--dirstat[= ]
각 하위 디렉토리에 대한 상대적 변경량 분포를 출력합니다. 그만큼
--dirstat의 동작은 쉼표로 구분된 목록을 전달하여 사용자 정의할 수 있습니다.
매개변수. 기본값은 diff.dirstat 구성 변수에 의해 제어됩니다.
(참조 자식 구성(1)). 다음 매개변수를 사용할 수 있습니다.

변경
에서 제거된 행을 세어 dirstat 수를 계산하십시오.
소스 또는 대상에 추가됩니다. 이것은 순수한 코드의 양을 무시합니다.
파일 내에서의 움직임. 즉, 파일에서 줄을 재배열하는 것은
다른 변경 사항만큼 계산됩니다. 매개변수가 없을 때의 기본 동작입니다.
주어진다.

라인
일반 라인 기반 diff 분석을 수행하여 dirstat 수를 계산하고
제거/추가된 줄 수를 합산합니다. (바이너리 파일의 경우 64바이트 청크를 계산합니다.
대신 바이너리 파일에는 선에 대한 자연스러운 개념이 없기 때문에). 이것은 더
값비싼 --dirstat 동작이 변경 동작보다 높지만 중요합니다.
다른 변경 사항만큼 파일 내의 줄을 재정렬합니다. 결과 출력은
다른 --*stat 옵션에서 얻는 것과 일치합니다.

파일
변경된 파일 수를 세어 dirstat 수를 계산합니다. 각각 변경
파일은 dirstat 분석에서 동일하게 계산됩니다. 이것은 계산상 가장 저렴합니다.
--dirstat 동작, 파일 내용을 전혀 볼 필요가 없기 때문입니다.

누적
상위 디렉토리에 대한 하위 디렉토리의 변경 사항도 계산합니다. 참고
누적을 사용하는 경우 보고된 백분율의 합계가 100%를 초과할 수 있습니다. 그만큼
기본(비누적) 동작은 누적되지 않음으로 지정할 수 있습니다.
매개 변수입니다.


정수 매개변수는 컷오프 백분율(기본적으로 3%)을 지정합니다. 디렉토리
이 변경 비율보다 적게 기여하는 것은 출력에 표시되지 않습니다.

예: 다음은 변경된 파일 수를 계산하고 더 적은 디렉토리를 무시합니다.
전체 변경 파일량의 10% 이상, 누적된 하위 디렉토리 수
상위 디렉토리에서: --dirstat=files,10,cumulative.

--요약
생성, 이름 바꾸기와 같은 확장 헤더 정보의 요약 요약 출력
그리고 모드 변경.

--stat가 포함된 패치
-p --stat의 동의어입니다.

-z
--raw, --numstat, --name-only 또는 --name-status가 지정된 경우에는 지우지 마십시오.
경로 이름을 지정하고 NUL을 출력 필드 종결자로 사용합니다.

이 옵션이 없으면 각 경로 이름 출력에는 TAB, LF, 큰따옴표 및
백슬래시 문자는 각각 \t, \n, \" 및 \\로 대체되고 경로 이름
이러한 교체가 발생한 경우 큰따옴표로 묶입니다.

--이름만
변경된 파일의 이름만 표시합니다.

--이름-상태
변경된 파일의 이름과 상태만 표시합니다. --diff-filter에 대한 설명을 참조하십시오.
상태 문자의 의미에 대한 옵션.

--하위 모듈[= ]
하위 모듈의 차이점이 표시되는 방식을 지정합니다. --submodule 또는 --submodule=log인 경우
주어진, 기록 형식이 사용됩니다. 이 형식은 다음과 같은 범위의 커밋을 나열합니다. 자식-
하위 모듈(1) 요약합니다. --submodule 옵션 생략 또는 지정
--submodule=short, 다음을 사용합니다. 짧은 체재. 이 형식은 단지 이름만 표시합니다.
범위의 시작과 끝에서 커밋합니다. diff.submodule을 통해 조정할 수 있습니다.
구성 변수.

--색상[= ]
색상 차이를 표시합니다. --색상(즉 없이 =)는 --color=always와 동일합니다.
항상, 절대 또는 자동 중 하나일 수 있습니다.

--무색
컬러 차이를 끕니다. --color=never와 동일합니다.

--단어-차이[= ]
다음을 사용하여 단어 diff를 표시합니다. 변경된 단어를 구분합니다. 기본적으로 단어는
공백으로 구분됩니다. 아래 --word-diff-regex를 참조하십시오. 그만큼 기본값은 평원,
다음 중 하나여야 합니다.


색상만 사용하여 변경된 단어를 강조 표시합니다. --color를 의미합니다.

평원
단어를 [-removed-] 및 {+ added+}로 표시합니다. 도피를 시도하지 않는다.
구분 기호가 입력에 나타나면 출력이 모호할 수 있습니다.

도자기
스크립트 사용을 위한 특별한 줄 기반 형식을 사용하십시오.
추가/제거/변경되지 않은 실행은 일반적인 통합 diff 형식으로 인쇄됩니다.
줄 시작 부분에서 +/-/` ` 문자로 시작하여
라인의 끝. 입력의 줄 바꿈은 물결표 ~로 표시됩니다.
그 자신의

없음
단어 비교를 다시 비활성화합니다.

첫 번째 모드의 이름에도 불구하고 색상은 변경된 항목을 강조 표시하는 데 사용됩니다.
활성화된 경우 모든 모드의 부품.

--단어-차이-정규식=
사용 비 공백 실행을 고려하는 대신 단어가 무엇인지 결정하려면
말이야. 또한 이미 활성화되지 않은 경우 --word-diff를 의미합니다.

겹치지 않는 모든 경기는 단어로 간주됩니다. 사이의 모든 것
이러한 일치 항목은 공백으로 간주되며 찾기 목적으로 무시(!)됩니다.
차이점. 정규 표현식에 |[^[:space:]]를 추가하여
공백이 아닌 모든 문자와 일치하는지 확인하십시오. 줄 바꿈을 포함하는 일치 항목은
새 줄에서 자동으로 잘림(!)됩니다.

예: --word-diff-regex=. 각 문자를 단어로 취급하고,
그에 따라 문자별로 차이점을 보여줍니다.

정규식은 diff 드라이버 또는 구성 옵션을 통해 설정할 수도 있습니다.
Gitattributes(1) 또는 자식 구성(1). 명시적으로 지정하면 모든 diff 드라이버를 재정의하거나
구성 설정. Diff 드라이버는 구성 설정을 재정의합니다.

--색상-단어[= ]
--word-diff=color plus 와 동일(정규식이 지정된 경우)
--단어-차이-정규식= .

--이름 바꾸기 없음
구성 파일이 기본값을 제공하는 경우에도 이름 바꾸기 감지를 끕니다.
이렇게.

--확인하다
변경 시 공백 오류가 발생하면 경고합니다. 공백 오류로 간주되는 것은 다음과 같습니다.
core.whitespace 구성으로 제어됩니다. 기본적으로 후행 공백
(공백만으로 구성된 줄 포함) 및 다음과 같은 공백 문자
줄의 초기 들여쓰기 안에 있는 탭 문자가 바로 뒤에 옵니다.
공백 오류로 간주됩니다. 문제가 발견되면 XNUMX이 아닌 상태로 종료합니다. 아니다
--exit-code와 호환됩니다.

--ws-오류-강조 표시=
로 지정된 줄의 공백 오류 강조 표시 에서 지정한 색상으로
color.diff.whitespace. 이전, 새, 컨텍스트의 쉼표로 구분된 목록입니다. 언제
이 옵션이 제공되지 않으면 새 줄의 공백 오류만 강조 표시됩니다. 예
--ws-error-highlight=new,old는 삭제 및 추가 모두에서 공백 오류를 강조 표시합니다.
윤곽. all은 old,new,context의 줄임말로 사용할 수 있습니다.

--전체 색인
처음 소수의 문자 대신 전체 사전 및 사후 이미지 얼룩을 표시합니다.
패치 형식 출력을 생성할 때 "인덱스" 라인의 개체 이름.

--바이너리
--full-index 외에도 git-apply로 적용할 수 있는 바이너리 diff를 출력합니다.

--약어[= ]
diff-raw 형식 출력에 전체 40바이트 XNUMX진수 개체 이름을 표시하는 대신
및 diff-tree 헤더 행에는 부분 접두사만 표시됩니다. 이것은
위의 --full-index 옵션은 diff-patch 출력 형식을 제어합니다. 기본값 없음
자릿수는 --abbrev=로 지정할 수 있습니다. .

-비[ ][/ ], --break-rewrites[=[ ][/ ]]
완전한 재작성 변경 사항을 삭제 및 생성 쌍으로 나눕니다. 이것은 두 가지를 제공합니다
목적 :

시리즈가 아닌 파일의 전체 재작성에 해당하는 변경 방식에 영향을 미칩니다.
일치하는 아주 적은 줄과 함께 삭제 및 삽입이 혼합됨
문맥으로 텍스트로, 그러나 이전의 모든 것의 단일 삭제로 이어집니다.
새로운 모든 것을 한 번 삽입하고 숫자 m이 -B의 이 측면을 제어합니다.
옵션(기본값은 60%)입니다. -B/70%는 원본의 30% 미만이
Git이 전체 재작성으로 간주하도록 결과에 남아 있습니다(즉, 그렇지 않으면
결과 패치는 컨텍스트와 함께 일련의 삭제 및 삽입이 혼합됩니다.
윤곽).

-M과 함께 사용하면 완전히 재작성된 파일도 소스로 간주됩니다.
이름 바꾸기(일반적으로 -M은 이름 바꾸기의 소스로 사라진 파일만 고려함),
숫자 n은 -B 옵션의 이 측면을 제어합니다(기본값은 50%). -B20%
20% 이상에 비해 추가 및 삭제로 변경됨을 지정합니다.
파일 크기는 다음으로 이름 바꾸기의 가능한 소스로 선택될 수 있습니다.
다른 파일.

-중[ ], --찾기-이름 바꾸기[= ]
이름 변경을 감지합니다. n이 지정되면 유사성 지수에 대한 임계값입니다(즉,
파일 크기 대비 추가/삭제량). 예를 들어 -M90%는 다음을 의미합니다.
Git은 파일의 90% 이상이면 삭제/추가 쌍을 이름 바꾸기로 간주해야 합니다.
변하지 않았습니다. % 기호가 없으면 숫자는 분수로 읽혀집니다.
그 앞에 소수점. 즉, -M5는 0.5가 되므로 -M50%와 같다.
마찬가지로 -M05는 -M5%와 동일합니다. 정확한 이름 변경으로 검색을 제한하려면 -M100%를 사용하십시오.
기본 유사성 지수는 50%입니다.

-씨[ ], --찾기-사본[= ]
복사본을 감지하고 이름을 바꿉니다. --find-copies-harder도 참조하십시오. n을 지정하면
-M과 같은 의미를 가집니다. .

--찾기-사본-더 세게
성능상의 이유로 기본적으로 -C 옵션은 원본 파일이
동일한 변경 집합에서 복사본이 수정되었습니다. 이 플래그는 명령을 검사하게 합니다.
수정되지 않은 파일을 복사본 소스의 후보로 사용합니다. 이것은 매우 비싸다.
대규모 프로젝트에 대한 작업이므로 주의하여 사용하십시오. 둘 이상의 -C 옵션 제공
같은 효과가 있습니다.

-D, --돌이킬 수 없는 삭제
삭제를 위한 사전 이미지를 생략합니다. 즉, 헤더만 인쇄하고
프리이미지 및 /dev/null. 결과 패치는 패치 또는
자식 적용; 이것은 검토에만 집중하려는 사람들을 위한 것입니다.
변경 후 문자. 또한 출력에는 분명히 충분한 정보가 부족합니다.
이러한 패치를 역으로, 심지어 수동으로도 적용하므로 옵션의 이름입니다.

-B와 함께 사용하는 경우 a의 삭제 부분에서 preimage도 생략한다.
쌍을 삭제/생성합니다.

-엘
-M 및 -C 옵션에는 O(n^2) 처리 시간이 필요합니다. 여기서 n은
잠재적인 이름 바꾸기/복사 대상. 이 옵션은 이름 바꾸기/복사 감지가 실행되는 것을 방지합니다.
이름 바꾸기/복사 대상 수가 지정된 수를 초과하는 경우.

--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
추가됨(A), 복사됨(C), 삭제됨(D), 수정됨(M), 이름이 변경된 파일만 선택
(R), 유형(예: 일반 파일, symlink, 하위 모듈, ...)이 변경됨(T),
병합되지 않음(U), 알 수 없음(X) 또는 페어링이 끊어짐(B). 모든 조합
의 필터 문자(없음 포함)를 사용할 수 있습니다. *(All-or-none)가 추가된 경우
조합에 다른 일치하는 파일이 있으면 모든 경로가 선택됩니다.
비교 기준; 다른 기준과 일치하는 파일이 없으면 아무 것도
선택됩니다.

-에스
지정된 문자열의 발생 횟수를 변경하는 차이점을 찾습니다.
(예: 추가/삭제). 스크립터의 사용을 위한 것입니다.

정확한 코드 블록(예: 구조체)을 찾고 싶을 때 유용합니다.
해당 블록이 처음 생성된 이후의 역사를 알고 싶다면: 기능을 사용하십시오.
반복적으로 사전 이미지의 흥미로운 블록을 -S로 다시 공급하고 계속 진행합니다.
블록의 첫 번째 버전을 얻을 때까지.

-G
일치하는 행이 추가/제거된 패치 텍스트가 포함된 차이점을 찾습니다. .

-S의 차이점을 설명하기 위해 --pickaxe-regex 및 -G , 고려하다
동일한 파일에 다음 diff가 포함된 커밋:

+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);

git log -G"regexec\(regexp" 가 이 커밋을 표시하는 동안 git log -S"regexec\(regexp"
--pickaxe-regex는 그렇지 않습니다(해당 문자열의 발생 횟수가
변화).

을 참조 곡괭이 입장 gitdiffcore(7) 자세한 내용은.

--곡괭이-모두
-S 또는 -G가 변경 사항을 찾으면 해당 변경 집합의 모든 변경 사항을 표시합니다.
변경 사항이 포함된 파일 .

--곡괭이-정규식
치료 일치시킬 확장 POSIX 정규식으로 -S에 제공됩니다.

-영형
에 지정된 순서대로 패치를 출력합니다. , 하나의 쉘 글로브가 있습니다.
한 줄에 패턴. 이는 diff.orderFile 구성 변수를 재정의합니다(참조 자식-
설정(1)). diff.orderFile을 취소하려면 -O/dev/null을 사용하십시오.

-R
두 개의 입력을 교환하십시오. 즉, 인덱스 또는 온디스크 파일과 트리 간의 차이점을 표시합니다.
내용

--상대적[= ]
프로젝트의 하위 디렉토리에서 실행할 때 외부 변경 사항을 제외하도록 지시할 수 있습니다.
이 옵션을 사용하여 디렉토리에 상대적인 경로 이름을 표시합니다. 당신이 없을 때
하위 디렉토리(예: 베어 저장소), 만들 하위 디렉토리의 이름을 지정할 수 있습니다.
를 제공함으로써 상대적인 출력 인수로.

-a, --텍스트
모든 파일을 텍스트로 취급합니다.

--space-at-eol 무시
EOL에서 공백의 변경 사항을 무시합니다.

-b, --무시 공간 변경
공백 양의 변화를 무시합니다. 줄 끝의 공백을 무시하고
하나 이상의 공백 문자의 다른 모든 시퀀스를 동등하다고 간주합니다.

-w, --무시-모든 공간
라인을 비교할 때 공백을 무시하십시오. 이것은 한 줄이 있더라도 차이점을 무시합니다.
다른 줄에는 공백이 없습니다.

--무시-빈 줄
행이 모두 비어 있는 변경 사항을 무시합니다.

--덩어리 간 컨텍스트=
지정된 행 수까지 diff hunk 사이의 컨텍스트를 표시합니다.
서로 가까운 퓨징 덩어리.

-W, --기능 컨텍스트
변경의 전체 주변 기능을 표시합니다.

--종료 코드
다음과 유사한 코드로 프로그램을 종료합니다. diff(1). 즉, 1이 있으면 종료됩니다.
차이가 있었고 0은 차이가 없음을 의미합니다.

--조용한
프로그램의 모든 출력을 비활성화합니다. --exit-code를 암시합니다.

--ext-diff
외부 diff 도우미가 실행되도록 허용합니다. 외부 diff 드라이버를 다음과 같이 설정하면
Gitattributes(5), 이 옵션을 다음과 함께 사용해야 합니다. 자식 로그(1) 그리고 친구들.

--ext-diff 없음
외부 diff 드라이버를 허용하지 않습니다.

--textconv, --no-textconv
바이너리 비교 시 외부 텍스트 변환 필터 실행 허용(또는 금지)
파일. 보다 Gitattributes(5) 자세한 내용은 textconv 필터는 일반적으로
단방향 변환, 결과 diff는 사람이 사용하기에 적합하지만 사용할 수 없습니다.
에 쓰이는. 이러한 이유로 textconv 필터는 기본적으로 다음에 대해서만 활성화됩니다. 자식-
diff(1)과하면 자식 로그(1), 그러나 자식 형식 패치(1) 또는 diff 배관 명령.

--무시-하위 모듈[= ]
diff 생성에서 하위 모듈에 대한 변경 사항을 무시합니다. "없음"일 수 있습니다.
"untracked", "dirty" 또는 "all"이 기본값입니다. "없음"을 사용하면
추적되지 않거나 수정된 ​​파일 또는 해당 HEAD를 포함할 때 수정된 하위 모듈
슈퍼 프로젝트에 기록된 커밋과 다르며 모든 커밋을 재정의하는 데 사용할 수 있습니다.
설정 무시 에 옵션 자식 구성(1) 또는 자식 모듈(5). "추적되지 않음"인 경우
사용된 하위 모듈은 추적되지 않은 콘텐츠만 포함하는 경우 더러운 것으로 간주되지 않습니다(그러나
수정된 콘텐츠에 대해 여전히 스캔됩니다). "dirty"를 사용하면 모든 변경 사항이 무시됩니다.
하위 모듈의 작업 트리, 상위 프로젝트에 저장된 커밋에 대한 변경 사항만
(이것은 1.7.0까지의 동작이었습니다). "all"을 사용하면 모든 변경 사항이 숨겨집니다.
하위 모듈.

--src-접두사=
"a/" 대신 지정된 소스 접두사를 표시합니다.

--dst-접두사=
"b/" 대신 지정된 대상 접두사를 표시합니다.

--접두사 없음
소스 또는 대상 접두어를 표시하지 마십시오.

이러한 공통 옵션에 대한 자세한 설명은 다음을 참조하십시오. gitdiffcore(7).


비교 대상 트리 개체의 ID입니다.

--캐시
온디스크 파일을 전혀 고려하지 않음

-m
기본적으로 인덱스에 기록되었지만 체크아웃되지 않은 파일은 삭제된 것으로 보고됩니다.
이 깃발은 자식 차이점 지수 체크아웃되지 않은 모든 파일이 최신 상태라고 말합니다.

RAW 출력 FORMAT


"git-diff-index", "git-diff-tree", "git-diff-files" 및 "git의 원시 출력 형식
diff --raw"는 매우 유사합니다.

이 명령은 모두 두 가지 세트를 비교합니다. 비교 대상이 다릅니다.

git-diff-index
비교한다 그리고 파일 시스템의 파일.

git-diff-index --캐시됨
비교한다 그리고 지수.

git-diff-트리 [-r] [ ...]
두 인수로 명명된 트리를 비교합니다.

git-diff-파일 [ ...]
파일 시스템의 인덱스와 파일을 비교합니다.

"git-diff-tree" 명령은 실행 중인 항목의 해시를 인쇄하여 출력을 시작합니다.
비교. 그 후 모든 명령은 변경된 파일당 하나의 출력 라인을 인쇄합니다.

출력 행은 다음과 같은 형식으로 지정됩니다.

내부 편집:100644 100644 bcd1234... 0123456... M file0
복사 편집 :100644 100644 abcd123... 1234567... C68 파일1 파일2
이름 바꾸기 편집 :100644 100644 abcd123... 1234567... R86 file1 file3
생성 :000000 100644 0000000... 1234567... 파일4
삭제:100644 000000 1234567... 0000000... D file5
병합되지 않음 :000000 000000 0000000... 0000000... U file6

즉, 왼쪽에서 오른쪽으로:

1. 콜론.

2. "src" 모드; 생성되거나 병합되지 않은 경우 000000입니다.

3. 공간.

4. "dst" 모드; 삭제 또는 병합되지 않은 경우 000000입니다.

5. 공간.

6. "src"의 경우 sha1; 생성되거나 병합되지 않은 경우 0{40}입니다.

7. 공간.

8. "dst"의 경우 sha1; 생성, 병합 해제 또는 "작업 트리 보기"인 경우 0{40}.

9. 공간.

10. 상태, 선택적인 "점수" 숫자가 뒤따릅니다.

11. 탭 또는 NUL인 경우 -z 옵션이 사용됩니다.

12. "src" 경로

13. 탭 또는 NUL인 경우 -z 옵션이 사용됩니다. C 또는 R에만 존재합니다.

14. "dst"의 경로; C 또는 R에만 존재합니다.

15. LF 또는 NUL인 경우 -z 옵션은 레코드를 종료하는 데 사용됩니다.

가능한 상태 편지는 다음과 같습니다:

· A: 파일 추가

· C: 파일을 새 파일로 복사

· D: 파일 삭제

· M: 파일의 내용 또는 모드 수정

· R: 파일 이름 바꾸기

· T: 파일 형식 변경

· U: 파일이 병합 해제되었습니다(커밋되기 전에 병합을 완료해야 합니다).

· X: "알 수 없는" 변경 유형(대부분 버그일 가능성이 있으므로 보고하십시오)

상태 문자 C와 R 뒤에는 항상 점수가 붙습니다.
이동 또는 복사의 소스와 대상 간의 유사성). 상태 문자 M은 다음과 같을 수 있습니다.
그 뒤에 파일 재작성에 대한 점수(비유사성 비율을 나타냄)가 표시됩니다.

파일이 파일 시스템에서 새 파일이고 동기화되지 않은 경우 모두 1으로 표시됩니다.
인덱스.

예:

:100644 100644 5be4a4...... 000000...... M 파일.c

-z 옵션을 사용하지 않으면 경로 이름에 TAB, LF 및 백슬래시 문자가 표시됩니다.
각각 \t, \n 및 \\로 표시됩니다.

차이 FORMAT 위한 병합


"git-diff-tree", "git-diff-files" 및 "git-diff --raw"는 -c or --cc ~에 대한 옵션
병합 커밋에 대해서도 diff 출력을 생성합니다. 출력이 설명된 형식과 다릅니다.
위와 같은 방법으로

1. 각 부모에 대한 콜론이 있습니다.

2. 더 많은 "src" 모드와 "src" sha1이 있습니다.

3. 상태는 각 부모에 대해 연결된 상태 문자입니다.

4. 선택적 "점수" 번호 없음

5. 단일 경로, "dst" 전용

예:

::100644 100644 100644 fabadb8... cc95eb0... 4866510... MM 설명.c

참고 결합 된 diff 모든 상위 항목에서 수정된 파일만 나열합니다.

생성 중 패치 세이프가드가 -P


"git-diff-index", "git-diff-tree" 또는 "git-diff-files"가 -p 옵션, "자식
차이" 없이 --노골적인 옵션 또는 "-p" 옵션이 있는 "git log"는
위에서 설명한 출력; 대신 패치 파일을 생성합니다. 당신은 생성을 사용자 정의 할 수 있습니다
GIT_EXTERNAL_DIFF 및 GIT_DIFF_OPTS 환경 변수를 통해 이러한 패치의

-p 옵션이 생성하는 것은 기존 diff 형식과 약간 다릅니다.

1. 다음과 같은 "git diff" 헤더가 앞에 옵니다.

diff --git a/file1 b/file2

a/ 및 b/ 파일 이름은 이름 바꾸기/복사가 포함되지 않는 한 동일합니다. 특히, 심지어
생성 또는 삭제의 경우 /dev/null은 지원 a/ 또는 b/ 대신 사용
파일 이름.

이름 바꾸기/복사가 포함된 경우 file1 및 file2는 소스 파일의 이름을 표시합니다.
이름 바꾸기/복사 및 이름 바꾸기/복사가 생성하는 파일의 이름.

2. 그 다음에는 하나 이상의 확장 헤더 행이 옵니다.

이전 모드
새로운 모드
삭제된 파일 모드
새 파일 모드
에서 복사
에게 복사
에서 이름 바꾸기
이름 바꾸기
유사성 지수
비유사성 지수
색인 ..

파일 모드는 파일 유형 및 파일을 포함하여 6자리 XNUMX진수로 인쇄됩니다.
권한 비트.

확장 헤더의 경로 이름에는 a/ 및 b/ 접두사가 포함되지 않습니다.

유사성 지수는 변경되지 않은 선의 백분율이고 비유사성 지수는
변경된 라인의 백분율입니다. 반내림된 정수이며 뒤에
퍼센트 기호. 따라서 100%의 유사성 인덱스 값은 두 개의 동일한 파일에 대해 예약되어 있습니다.
100% 비유사성은 이전 파일의 어떤 라인도 새 파일에 포함되지 않았음을 의미합니다.
하나.

인덱스 라인에는 변경 전후의 SHA-1 체크섬이 포함됩니다. 그만큼 ~이다
파일 모드가 변경되지 않으면 포함됩니다. 그렇지 않으면 별도의 줄은 이전을 나타냅니다.
그리고 새로운 모드.

3. 경로 이름의 TAB, LF, 큰따옴표 및 백슬래시 문자는 \t, \n,
\" 및 \\ 각각. 이러한 대체가 필요한 경우 전체
경로 이름은 큰따옴표로 묶습니다.

4. 출력의 모든 file1 파일은 커밋 이전의 파일을 참조하고 모든 file2는
파일은 커밋 후 파일을 참조합니다. 각 변경 사항을 각각에 적용하는 것은 올바르지 않습니다.
순차적으로 파일. 예를 들어, 이 패치는 a와 b를 바꿉니다.

차이점 --git a/ab/b
에서 이름 바꾸기
b로 이름 바꾸기
차이점 --git a/bb/a
b에서 이름 바꾸기
로 이름 바꾸기

결합 차이 FORMAT


diff 생성 명령은 -c 또는 --cc 옵션을 사용하여 diff를 생성할 수 있습니다. 결합 된 diff 언제
병합을 보여줍니다. 병합을 표시할 때 기본 형식입니다. 자식 차이(1) 또는 자식-
표시(1). 또한 이러한 명령에 -m 옵션을 지정하여 강제로 실행할 수 있습니다.
병합의 개별 부모와 diff 생성.

A 결합 된 diff 형식은 다음과 같습니다.

diff --결합된 describe.c
인덱스 fabdb8,cc95eb0..4866510
--- a/describe.c
+++b/describe.c
@@@ -98,20 -98,12 +98,20 @@@
반환 (a_date > b_date) ? -1 : (a_date == b_date) ? 0:1;
}

- 정적 무효 설명(char *arg)
-정적 무효 설명(구조 커밋 *cmit, int last_one)
++정적 무효 설명(char *arg, int last_one)
{
+ 부호 없는 문자 sha1[20];
+ 구조체 커밋 *cmit;
구조체 commit_list *목록;
정적 int 초기화 = 0;
구조체 커밋_이름 *n;

+ if (get_sha1(arg, sha1) < 0)
+ 사용법(describe_usage);
+ cmit = lookup_commit_reference(sha1);
+ 경우 (!cmit)
+ 사용법(describe_usage);
+
if (!초기화) {
초기화됨 = 1;
for_each_ref(get_name);

1. 다음과 같은 "git diff" 헤더가 앞에 옵니다. -c 옵션은
사용된):

diff --결합 파일

또는 이와 같이 (언제 --cc 옵션이 사용됨):

diff --cc 파일

2. 그 뒤에 하나 이상의 확장 헤더 행이 옵니다(이 예는 다음과의 병합을 보여줍니다.
두 부모):

색인 , ..
방법 , ..
새 파일 모드
삭제된 파일 모드 ,

모드 , .. 다음 중 하나 이상이 있는 경우에만 라인이 나타납니다. ~이다
나머지와 다릅니다. 감지된 콘텐츠에 대한 정보가 포함된 확장 헤더
이동(이름 바꾸기 및 복사 감지)은 XNUMX의 diff와 함께 작동하도록 설계되었습니다.
결합된 diff 형식에서는 사용되지 않습니다.

3. 두 줄의 from-file/to-file 헤더가 옵니다.

--- 파일
+++ b/파일

기존의 두 줄 헤더와 유사 통일 diff 형식, /dev/null은 다음에 사용됩니다.
신호 생성 또는 삭제 파일.

4. 청크 헤더 형식이 수정되어 사람들이 실수로
패치 -p1. 병합 커밋 변경 사항을 검토하기 위해 Combined diff 형식이 생성되었습니다.
신청용이 아닙니다. 변경 사항은 확장의 변경 사항과 유사합니다. 색인
헤더:

@@@ @@@

결합된 diff에 대한 청크 헤더에 (부모 수 + 1) @ 문자가 있습니다.
형식입니다.

전통과 달리 통일 두 개의 파일 A와 B를 하나의 파일로 표시하는 diff 형식
- (마이너스 — A에 표시되지만 B에서는 제거됨), + (더하기 — A에 누락되었지만
B에 추가됨) 또는 " "(공백 — 변경되지 않음) 접두사, 이 형식은 둘 이상의 파일을 비교합니다.
file1, file2,... 하나의 파일 X로 구성되어 각 fileN과 X가 어떻게 다른지 보여줍니다. 열 XNUMX개
for each fileN은 출력 라인 앞에 추가되어 X의 라인이
그것.

A - 열 N의 문자는 줄이 fileN에 나타나지만 나타나지 않음을 의미합니다.
결과에. 열 N의 A + 문자는 결과에 줄이 나타남을 의미합니다.
fileN에는 해당 줄이 없습니다(즉, 줄은
그 부모의 관점).

위의 예제 출력에서 ​​함수 시그니처는 두 파일 모두에서 변경되었습니다(따라서 두
- file1 및 file2 모두에서 제거, 추가된 한 줄을 의미하는 ++ 추가되지 않음
file1 또는 file2에 표시됨). 또한 다른 여덟 줄은 file1과 동일하지만 다음을 수행합니다.
file2에 나타나지 않습니다(따라서 접두사 +가 붙음).

git diff-tree -c로 표시되면 병합 커밋의 부모와 병합 커밋을 비교합니다.
결과(예: file1..fileN은 부모임). git diff-files -c로 표시되면 다음을 비교합니다.
해결되지 않은 두 개의 병합 부모와 작업 트리 파일(예: file1은 2단계입니다.
"우리 버전", file2는 "그들의 버전"이라고도 하는 3단계입니다.

기타 차이 형식


--summary 옵션은 새로 추가, 삭제, 이름 변경 및 복사된 파일을 설명합니다. --stat
옵션 추가 비교 통계(1) 그래프를 출력합니다. 이 옵션은 다른 옵션과 결합할 수 있습니다.
옵션(예: -p)은 사람이 사용하기 위한 것입니다.

이름 바꾸기 또는 복사와 관련된 변경 사항을 표시할 때 --stat 출력은
경로 이름의 공통 접두사와 접미사를 결합하여 경로 이름을 간결하게 만듭니다. 예를 들어
386줄을 수정하면서 Arch/i86/Makefile을 Arch/x4/Makefile로 이동하는 변경 사항은 다음과 같습니다.
다음과 같이 표시됩니다.

아치/{i386 => x86}/Makefile | 4 +--

--numstat 옵션은 다음을 제공합니다. 비교 통계(1) 정보는 쉽게 기계를 위해 설계되었습니다.
소비. --numstat 출력의 항목은 다음과 같습니다.

1 2 읽어보기
3 1 아치/{i386 => x86}/Makefile

즉, 왼쪽에서 오른쪽으로:

1. 추가된 라인의 수

2. 탭

3. 삭제된 라인의 수;

4. 탭

5. 경로명(아마도 이름 바꾸기/복사 정보 포함);

6. 개행.

-z 출력 옵션이 적용되면 출력 형식은 다음과 같습니다.

1 2 읽어보기
3 1 NUL 아치/i386/Makefile NUL 아치/x86/Makefile NUL

그건은 다음과 같습니다 :

1. 추가된 라인의 수

2. 탭

3. 삭제된 라인의 수;

4. 탭

5. NUL(이름 변경/복사된 경우에만 존재함);

6. 사전 이미지의 경로명;

7. NUL(이름 변경/복사된 경우에만 존재함);

8. 포스트 이미지의 경로 이름(이름을 바꾸거나 복사한 경우에만 존재함);

9. NUL.

이름이 변경된 경우 사전 이미지 경로 앞의 추가 NUL은
읽고 있는 현재 레코드가 단일 경로 레코드인지 또는 이름 바꾸기/복사인지 알려주는 출력
미리 읽지 않고 기록하세요. 추가 및 삭제된 라인을 읽은 후 NUL까지 읽습니다.
경로 이름이 생성되지만 NUL인 경우 레코드에는 두 개의 경로가 표시됩니다.

작동 모드


인덱스 파일을 완전히 신뢰할지 여부를 선택할 수 있습니다( --캐시 깃발)
또는 diff 로직에 통계 상태와 일치하지 않는 파일을 표시하도록 요청하세요.
"잠정적으로 변경되었습니다". 이 두 가지 작업 모두 실제로 매우 유용합니다.

캐시됨 모드


If --캐시 지정되면 다음을 질문할 수 있습니다.

HEAD와 현재 인덱스의 차이점을 보여주세요
내용(내가 'git write-tree'를 사용하여 작성한 내용)

예를 들어 작업 디렉터리에서 작업하고 일부 파일을 업데이트했다고 가정해 보겠습니다.
인덱스에 포함되어 커밋할 준비가 되었습니다. 정확히 보고 싶으시다면 당신은 할 것입니다
새로운 트리 객체를 작성하고 그런 식으로 비교할 필요 없이 커밋합니다.
넌 그냥 그래

git diff-index --캐시된 HEAD

예: commit.c의 이름을 git-commit.c로 바꾸고 update-index를 수행했다고 가정해 보겠습니다.
인덱스 파일에서 이를 유효하게 만듭니다. git diff-files는 아무것도 표시하지 않습니다.
인덱스 파일이 내 작업 디렉토리와 일치하기 때문입니다. 하지만 자식 차이점 지수 않습니다 :

torvalds@ppc970:~/git> git diff-index --cached HEAD
-100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 commit.c
+100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 git-commit.c

위의 내용이 이름 변경임을 쉽게 알 수 있습니다.

실제로 git diff-index --cached 영상을 항상 실제로 수행하는 것과 완전히 동일합니다.
자식 쓰기 트리 그리고 그걸 비교하는 거죠. 이것을 제외하고는 당신이하는 경우에 훨씬 더 좋습니다
단지 당신이 어디에 있는지 확인하고 싶을 뿐입니다.

따라서 git diff-index --cached를 수행하는 것은 기본적으로 스스로에게 질문할 때 매우 유용합니다.
"내가 이미 커밋한 것으로 표시한 것은 무엇이며, 이전 커밋과의 차이점은 무엇입니까?
나무".

캐시되지 않음 모드


"캐시되지 않은" 모드는 다른 접근 방식을 취하며 잠재적으로 더 유용합니다.
두 가지 기능은 에뮬레이트할 수 없습니다. 자식 쓰기 트리 + 자식 diff 트리. 그러므로
그것이 기본 모드입니다. 캐시되지 않은 버전은 다음과 같은 질문을 합니다.

HEAD와 현재 체크아웃된 것의 차이점을 보여주세요
트리 - 최신이 아닌 색인 내용 _및_ 파일

이는 분명히 매우 유용한 질문이기도 합니다. 범하다.
이번에도 출력은 다음과 일치합니다. 자식 diff 트리 -r 티로 출력되지만 비틀림이 있습니다.

문제는 일부 파일이 인덱스와 일치하지 않으면 백업 저장소가 없다는 것입니다.
이를 보여주기 위해 마법의 "all-zero" sha1을 사용합니다. 그럼 당신이
kernel/sched.c를 편집했지만 실제로는 수행하지 않았습니다. 자식 업데이트 인덱스 아직은-
새 상태와 관련된 "객체"가 없으며 다음을 얻습니다.

torvalds@ppc970:~/v2.6/리눅스> git diff-index --abbrev HEAD
:100644 100664 7476bb... 000000... 커널/sched.c

즉, 트리가 변경되었으며 kernel/sched.c가 최신이 아니라는 것을 보여줍니다.
새로운 내용이 포함될 수 있습니다. 올-제로 sha1은 실제 차이를 얻으려면 다음을 수행해야 함을 의미합니다.
개체 대 개체를 수행하는 대신 작업 디렉터리에 있는 개체를 직접 살펴보세요.
차이

주의 사항
이 유형의 다른 명령과 마찬가지로 자식 차이점 지수 실제로는 쳐다보지도 않는다
파일의 내용을 전혀 알 수 없습니다. 따라서 kernel/sched.c가 실제로 변경되지 않았을 수도 있습니다.
단지 당신이 그것을 만졌다는 것뿐입니다. 두 경우 모두 다음 사항에 유의해야 합니다. 자식
업데이트 인덱스 인덱스를 동기화하도록 만듭니다.

주의 사항
여러 파일이 "업데이트되었습니다"와 "아직 더러워져 있습니다"로 표시되도록 할 수 있습니다.
작업 디렉터리"를 함께 사용합니다. 어떤 파일이 어떤 상태인지 항상 알 수 있습니다.
"업데이트됨" 항목에는 유효한 sha1이 표시되고 "동기화되지 않음" 항목은
index" 항목은 항상 특수한 올-제로 sha1을 갖습니다.

GIT


의 일부 자식(1) 스위트

onworks.net 서비스를 사용하여 온라인으로 git-diff-index 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad