developer tip

커밋 간 git-diff로 * 모든 * 공백 변경 무시

optionbox 2020. 11. 25. 07:53
반응형

커밋 간 git-diff로 * 모든 * 공백 변경 무시


나는 코드베이스를 살펴보고 공백의 이상한 점을 수정하고 일반적으로 들여 쓰기 등을 수정하고 있으며 실수로 다른 변경을하지 않았는지 확인하고 싶으므로 git diff -w공백을 무시하면서 변경된 모든 파일의 차이점을 표시 하려고 합니다. 차이. 문제는 이것이 실제로 모든 공백 차이를 무시 하는 것이 아니라는 것입니다 . 적어도 내가 단순히 공백 차이 라고 생각하는 것입니다. 예를 들어 다음 출력에서 git diff -w,

-"Links":
-{
-
-    "Thermal":
-
-{
-
+  "Links": {
+    "Thermal": {

당신은 내가 단지

  1. 불필요한 빈 줄 제거,
  2. 값이 열리는 키의 줄 끝에 중괄호를 넣습니다.
  3. 문맥에 맞게 들여 쓰기

이 질문 은 처음에는 답을 제공 할 수있는 것처럼 보였지만 두 특정 커밋 간의 차이가 아닌 두 특정 파일 간의 차이점을 다룹니다 . 검색을 통해 밝혀진 다른 모든 것도 막 다른 골목이었습니다. 예를 들어, 이 질문 은 차이를 표시하는 것이 아니라 병합에 관한 것이며 , 이 질문단어 수준의 차이를 표시하는 등의 문제를 다룹니다.


아마도 더 나은 답이 있을지 모르지만 지금까지 찾은 최고의 솔루션은 이것이다.

먼저 Git이 현재 사용하고있는 "공백"의 정의를 제어해야합니다. .gitconfig프로젝트에서를 만들거나 편집하여

[core]
    whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent

다음으로 사용 된 단어의 정의를 제어해야합니다. 을 사용하는 대신 다음을 git diff -w추가하십시오 --word-diff-regex=[^[:space:]].

git diff -w  --word-diff-regex=[^[:space:]]

여전히 컨텍스트를 볼 수 있습니다. (제 경우에는 공백 차이를 제외하고 차이가 없는지 확인하려고하기 때문에 ) 도움이되지 않습니다. -U0Git에게 0 줄의 컨텍스트를 제공 하도록 지시 할 수 있습니다 .

git diff -w -U0 --word-diff-regex=[^[:space:]]

그러나 여전히 컨텍스트와 매우 유사한 출력을 얻을 수 있지만 모든 변경 사항을주의 깊게 수동으로 검토하여 공백 만 변경되었는지 확인하는 것보다 훨씬 낫습니다.


커밋 간 git-diff로 모든 공백 변경 무시

이 질문은 처음에는 답을 제공 할 수있는 것처럼 보였지만 두 특정 커밋 간의 차이가 아닌 두 특정 파일 간의 차이점을 다룹니다. 검색을 통해 밝혀진 다른 모든 것도 막 다른 골목이었습니다 ....

Git이 작업에 잘못된 도구이기 때문에 문제가 있다고 생각합니다. 그것은 작업을 쉽게 만들지 않으며 도구를 수용하기 위해 항복하는 것은 잘못된 접근 방식입니다. 도구는 사용자를 위해 작동해야하며 그 반대의 경우도 마찬가지 입니다.

두 번째 클론을 수행 한 다음 문제의 시작 버전을 체크 아웃합니다. 그런 다음 현재 개정판을 사용하여 정기적으로 diff를 실행하십시오 diff -bur --ignore-all-space <dir1> <dir2>.

다음은 몇 가지 옵션입니다.diff

-i, --ignore-case
       ignore case differences in file contents

-E, --ignore-tab-expansion
       ignore changes due to tab expansion

-Z, --ignore-trailing-space
        ignore white space at line end

-b, --ignore-space-change
       ignore changes in the amount of white space

-w, --ignore-all-space
       ignore all white space

-B, --ignore-blank-lines
       ignore changes where lines are all blank

참고 URL : https://stackoverflow.com/questions/33159394/ignore-all-whitespace-changes-with-git-diff-between-commits

반응형