2016-06-28 3 views
0

그래서 내가 같은 지역에 여러 줄을 편집하고있어 자식은 diff 할 말을 내가 얻을 :git diff가 변경 한 행을 정렬하는 방법이 있습니까?

- Change 1 
+ Change1 
- Change 2 
+ Change2 

내가 차이점이 같은 것으로 표시 순서를 변경할 수 있습니다

- Change 1 
- Change 2 
+ Change1 
+ Change2 

이 방법을 사용하면 누군가 내가 github에서 이전 커밋과 내 커밋을 비교할 때 어떤 변경 사항을 보여줄 수 있는지 쉽게 알 수 있습니다.

답변

1

git diff 출력은 순차적으로 작동하기 때문에 소스 행의 순서에 따라 결정됩니다. 그래서이 게시물의 제목 줄에있는 질문에 대한 답변 ("줄을 다시 정렬하는 방법이 있습니까?")은 단순히 "아니오"입니다.

그러나 귀하의 예를 기준으로 의 주소는입니다.

가의 몇 가지 실제 git diff 출력을 살펴 보자 (! 다행 당신은 예를 제공), 어떻게 these two command line argument control knobs가에 영향을

-Un, --unified=n

            차이점을 생성 n 일반적인 3 대신 컨텍스트의 줄. -p을 의미합니다.

           

--inter-hunk-context=lines하여 서로 가까이 심술쟁이을 융합, 지정된 라인 번호까지 DIFF 심술쟁이의 컨텍스트를 확인.

나는 README 파일로 저장소를 만들고 두 가지를 변경했습니다. 제 1 변화는 라인 (1)에 있고, 두 번째는 다음 라인 9에 표준 git diff 출력 :

$ git diff 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,4 +1,4 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
@@ -6,4 +6,4 @@ git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

가의 세 라인에서 컨텍스트의 양을 감소 -U를 사용하도록 단지 하나

$ git diff -U1 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,2 +1,2 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
@@ -8,2 +8,2 @@ the amount of 
context that will 
-be shown. 
+be shown. MOD2 

diff가 보다 짧으며이지만 여전히 일부 컨텍스트가 있습니다. (덧붙여 말하자면, MOD1에 대한 위의 "위"컨텍스트가없고 MOD2에 대한 "아래"컨텍스트가 없다는 점에 유의하십시오. 파일에 더 많은 텍스트가있는 경우 보통 git diff 출력은 다소 길어집니다 첫 번째 diff에는 사용 가능한 경우 세 줄의 컨텍스트가 있고, 세 번째 줄에는 세 번째 줄이 있고, 세 번째 줄에는 줄 1이 있고 줄 9는 한 줄 아래에 두 번째 줄이 있습니다.라인 (1)에 변경 아래 문맥 4 개 라인은 DIFF 화물선은 라인 1을 나타내고 있기 때문

$ git diff -U4 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

이됩니다)

라인 오브 콘텍스트를 늘리면 차이점 융합의 부작용이 5부터 5까지; 9 번 줄의 변경 내용 위에 4 줄의 컨텍스트가 있습니다. diff 행크는 5 행부터 9 행까지를 보여줍니다. 5 호선과 5 호선은 같기 때문에 두 사람이 융합됩니다.

또는 -U1 또는 다소 미친 -U0 (전혀 컨텍스트)를 사용하는 경우에도, 나는 그들이 합류 지점까지, 사이에 제 1 및 제 2 DIFF 화물선을 추가 상황 을 추가 --inter-hunk-context를 사용할 수 있습니다. -U1으로 어떤 효과를 얻으려면 --inter-hunk-context=5이 필요합니다.

$ git diff -U1 --inter-hunk-context=5 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

이번에는 제 덩어리 2 통해 라인 1을 나타내고, 상기 제 방송 라인 9까지의 8 이제 5 개 개의 라인 3, 4, 5, 6이다 라인-하고 추가 7 및 2 명의 심술쟁이가 인접 해 하나의 diff 행크에 융합된다.

-U0을 사용하면이 필요합니다. 기본 diff 행크는 1 행과 9 행 전용이므로 2 ~ 8 줄 (7 줄)을 추가해야 합치 게됩니다.

당신이 사용할 수 있습니다 하나 더 관련 옵션이있다 :

-W,

--function-context 변경의 기능을 둘러싼             쇼 전체. 이러한 파일에는 "기능"이없는 것처럼 일반 텍스트 영어 포함이 특정 README 파일, 들어

,이 옵션은 유용하지 않습니다. -W의 작동 여부는 파일의 언어와 Git이 해당 언어로 작성된 기능을 인식 할 수 있는지 여부에 따라 다릅니다.

관련 문제