모든 자식 명령에서 공백 변경 무시


26

줄 끝을 바꿀 때 git 경고하는 방법이나 전체 파일을 엉망으로 만드는 기타 기술을 설명하는 수많은 사이트를 발견했습니다. 너무 늦었다 고 가정하십시오. 트리에는 이미 파일의 줄 끝을 토글하는 커밋이 있으므로 git diff이전 파일을 빼고 내용이 같은 새 파일을 추가하는 것을 보여줍니다

git 구성 옵션 또는 명령 줄 플래그를 찾고 있습니다. diff두 줄이 공백으로 만 다르면 두 줄이 동일하다고 가정하십시오. - 나는 파일의 차이에 의존 아무것도에 대한 작업이 설정 옵션 / 플래그가 필요합니다 diff, blame심지어 merge/ rebase이상적으로 - 내가 원하는 git완전히 후행 공백, 특히 라인 엔딩을 무시. 어떻게해야합니까?

답변:


14

diff에는 git diff --ignore-space-at-eol충분해야합니다. DIFF 및 비난를 들어, 모든 공백 변경 사항을 무시할 수 있습니다 -w: git diff -w, git blame -w.

들어 git applygit rebase, 문서는 언급 --ignore-whitespace.

병합의 경우 외부 병합 도구를 사용해야하는 것처럼 보입니다. 이 래퍼 스크립트를 (안된), 어디에서 사용할 수있는 favorite-mergetool당신의 마음에 드는 것입니다 병합 도구 ; 을 실행하십시오 git -c mergetool.nocr.cmd=/path/to/wrapper/script merge. 병합 결과는 유닉스 형식입니다. 다른 형식을 선호하는 경우 모든 것을 다른 형식으로 변환하거나 $MERGED병합 후 변환 하십시오.

#!/bin/sh
set -e
TEMP=$(mktemp)
tr -d '\013' <"$BASE" >"$TEMP"
mv -f "$TEMP" "$BASE"
TEMP=$(mktemp)
tr -d '\013' <"$LOCAL" >"$TEMP"
mv -f "$TEMP" "$LOCAL"
TEMP=$(mktemp)
tr -d '\013' <"$REMOTE" >"$TEMP"
mv -f "$TEMP" "$REMOTE"
favorite-mergetool "$@"

혼합 된 줄 끝으로 인한 문제를 최소화하려면 텍스트 파일을 그대로 선언 해야 합니다 .

참조 자식 병합 라인 끝의 차이를 무시하는 것이 가능합니까? 스택 오버플로.


항상 git blame과 함께 -w 플래그를 사용하도록 구성되어 있습니까?
Thayne

@Thayne 내가 아는 것은 아닙니다. 별명을 정의 bl = blame -w할 수 있지만 내장 명령의 이름을 다시 정의 할 수 없으며 기본값으로 설정하는 구성 옵션이 표시되지 않습니다. 그러나 나는 자식 전문가가 아닙니다.
Gilles 'SO- 악마 그만'

에 대한 git status?
Ejaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.