반환 된 정보로부터 데이터를 수집하고 있습니다.
git diff <commitId>..<commitId>
그리고 나는 만났다 @@ -1 +1 @@
그게 무슨 말인지 이해할 수 없습니다. Google에서 약간 검색했지만 아무 소용이 없습니다.
답변
통합 된 diff 덩어리 식별자입니다. 이것은 GNU Diffutils에 의해 문서화 되었습니다.
통합 출력 형식은 다음과 같은 두 줄 헤더로 시작합니다.
--- 파일에서 파일 수정 시간 +++ 파일에서 파일 수정 시간타임 스탬프는
2002-02-21 23:30:39.942229878 -0800
날짜, 시간 (초) 및 시간대를 나타내는 것처럼 보입니다 . 분수 타임 스탬프를 지원하지 않는 호스트에서는 분수 초가 생략됩니다.
--label=label
옵션을 사용하여 헤더의 내용을 변경할 수 있습니다 . 대체 이름을 참고하십시오 .다음으로 하나 이상의 차이점이 있습니다. 각 덩어리는 파일이 다른 하나의 영역을 보여줍니다. 통합 형식 덩어리는 다음과 같습니다.
@@ 파일 라인 번호에서 파일 라인 번호까지 @@ 어느 파일 라인 에서나 파일 라인 번호 ...덩어리가 한 줄만 포함하면 시작 줄 번호 만 나타납니다. 그렇지 않으면 라인 번호는 다음과 같습니다 . 빈 덩어리는 덩어리 다음의 줄에서 시작하는 것으로 간주됩니다.
start,count
덩어리와 컨텍스트에 두 개 이상의 줄이 포함 된 경우 줄 번호는 다음과 같습니다 . 그렇지 않으면 끝 줄 번호 만 나타납니다. 빈 덩어리는 덩어리 앞의 줄에서 끝나는 것으로 간주됩니다.
start,count
두 파일에 공통된 행은 공백 문자로 시작합니다. 두 파일간에 실제로 다른 행은 왼쪽 인쇄 열에 다음 표시기 문자 중 하나가 있습니다.
- +
여기에 첫 번째 파일에 한 줄이 추가되었습니다.- –
첫 번째 파일에서 한 줄이 제거되었습니다.
답변
간단한 예제 분석
형식은 기본적으로 diff -u
통합 diff 와 동일합니다 .
예를 들면 :
diff -u <(seq -w 16) <(seq -w 16 | grep -Ev '^(02|03|14|15)$')
여기서 우리는 2, 3, 14, 15 행을 제거했습니다. 출력 :
@@ -1,6 +1,4 @@
01
-02
-03
04
05
06
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
@@ -1,6 +1,4 @@
방법:
-
-1,6
첫 번째 파일의이 부분이 1 행에서 시작하여 총 6 행을 표시 함을 의미합니다. 따라서 1 ~ 6 행을 표시합니다.1 2 3 4 5 6
-
“오래된”을 의미하며 일반적으로diff -u old new
. -
+1,4
두 번째 파일의이 부분이 1 행에서 시작하여 총 4 행을 표시 함을 의미합니다. 따라서 1 ~ 4 행을 표시합니다.+
“새로운”을 의미합니다.2 개 라인이 제거 되었기 때문에 6 개 대신 4 개 라인 만 있습니다! 새로운 덩어리는 다음과 같습니다.
01 04 05 06
@@ -11,6 +9,4 @@
두 번째 덩어리의 경우 유사합니다.
-
이전 파일에는 이전 파일의 11 행에서 시작하여 6 행이 있습니다.
11 12 13 14 15 16
-
새 파일에는 새 파일의 9 행에서 시작하여 4 행이 있습니다.
11 12 13 16
그 선 주
11
2와 3 : 우리는 이미 이전의 덩어리에 2 개 라인을 제거했기 때문에 새 파일의 9 라인입니다.
덩어리 헤더
git 버전 및 구성에 따라 줄 옆에 코드 줄을 가져올 수도 있습니다 ( @@
예 func1() {
: in :
@@ -4,7 +4,6 @@ func1() {
이것은 -p
plain 플래그로 도 얻을 수 있습니다 diff
.
예 : 이전 파일 :
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
line을 제거 6
하면 diff가 다음과 같이 표시됩니다.
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
이에 대한 올바른 라인이 아니라는 것을 참고 func1
:이 라인을 생략 1
하고 2
.
이 멋진 기능은 종종 각 덩어리가 속한 함수 나 클래스를 정확히 알려주므로 차이를 해석하는 데 매우 유용합니다.
헤더를 선택하는 알고리즘이 정확히 어떻게 작동하는지는 다음에서 논의됩니다. git diff hunk 헤더의 발췌 부분은 어디에서 왔습니까?
답변
이 diff 덩어리가 시작하고 끝나는 줄 번호를 나타내는 현재 덩어리 범위 정보입니다.
자세한 설명은 http://en.wikipedia.org/wiki/Diff#Unified_format 을 참조 하십시오 .