추가만 공백이 아닌 변경

나는 내 텍스트 편집기를 트리밍할 후행 공백 없이 자동으로 저장할 때 나는 심각한 문제가 있는 오픈 소스 프로젝트를 파일이므로 충족되었으며 후행 공백.

내가 먼저 제출됩니다 시도하시겠습니까 때마다 내가 직접 선택할 수 있는 패치합니다 화이트스페이스 국한됨 변경 관련 정보를 모두 무시 됩니다. 깃 (git) '로 달릴 땐' 뿐만 아니라, 하지만 난 보통 여러 문제 때문에 리베이스 실행하십시오 저들이요

이 같은 싶다 추가합니까 색인에만 비슷한 방식으로 변경 할 수 있는 'p' 는 공백이 아닌 깃 (git) 을 추가 - 있지만, 모든 변경 없이도 스스로 선택할 수 있습니다.

아는 사람 how to do this?

편집: , 방식을 변경할 수 없는 내가 결정한 매개변수이므로 작동됨 프로젝트에 대해 논의한 뒤 it on the 메일링 리스트, 무시하려면 이.

해결책

39, t, 이게 내가 필요한 솔루션 wasn& @frew 상당히 앨리어스를 I made for 똑같은 문제:

alias.addnw=!sh -c 'git diff -U0 -w --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -'

또는 실행하십시오 됩니다.

git diff -U0 -w --no-color | git apply --cached --ignore-whitespace --unidiff-zero -

업데이트

또 '및' 옵션 'u0 오니트리프 제로 해결하십시오 컨텍스트로 일치 문제' 에 따르면, 각각 [이 주석문입니다] (https://stackoverflow.com/questions/3515597 # comment61915463_7149602).

기본적으로 '공백' 이 될 수 있는 패치를 적용한 qic 추가 없이 변경. 깃 (git) 하는 것을 볼 수 있습니다 '후' 아다노프 너회의 / 파일 변경, it& # 39 의 공백 떠나버렸소 언스티지드 계속 제공될 것입니다.

그러나 나는 이 isn& 더 컬러 없습니다 # 39, t, 나는 항상 필요한 색계열 설정되었습니다 사용할 수 있습니다. 어쨌든, 보다 더 안전한 미얀요

해설 (28)

이 방법은 봐요.

이 작품을 중심으로 한 비밀창고 유지하려면

git stash && git stash apply && git diff -w > foo.patch && git checkout . && git apply foo.patch && rm foo.patch

I have , t, but I 숨겨 놨다 같은 don& # 39 로 변경 내용을 무시하시겠습니까 실행하십시오 버그로 깃 (git) + 시그윈 어디서 그런 걸 수 있도록 smartupdate 갔다 세로그 적어도 난 설정되었습니다 다음과 같습니다.

git add . && git commit -am 'tmp' && git reset HEAD^ && git diff -w > foo.patch && git checkout . && git apply foo.patch && rm foo.patch

기본적으로 우리는 diff 생성, 변화, 복구입니다 lionbridge 의 모든 공간이 있는 t # 39 doesn& 포함시키십시오 변경한 후 적용하십시오 차이점.

해설 (9)

패치 파일 생성 개뿐인 진짜 변경률 (공백만 흐름선 제외) 로 변경) 을 적용한 후 작업공간에서 청소하십시오 및 패치 파일: &gt. git diff &gt. backup&lt br>; &gt. diff - w &gt 깃 (git). changes&lt br>; &gt. git 재설정하지 hard&lt br&gt -;; &gt. 패치합니다 &lt. 변경

'차이' 를 '와' 추가 검토 후 나머지 커밋합니다 않았다.

이를 위해 이 avamer 머큐리얼 있다. &gt. diff &gt 수은 (hg). backup&lt br>; &gt. diff - w &gt 수은 (hg). changes&lt br>; &gt. 수은 (hg) all&lt br&gt 리업으로 -;; &gt. hg 가져오기의 증대하고자 없습니다. 변경 -

해설 (13)

추가 이기트콘피그 데이터베이스에구성원을 '다음':

anw = !git diff -U0 -w --no-color -- \"$@\" | git apply --cached --ignore-whitespace --unidiff-zero "#"

덕분에 [@Colin Herbert& # 39 의 오토메이티드] (https://stackoverflow.com/a/7149602/5353461) 에서 영감을 얻었다.

    • 문법 설명

'#' 인용 # 39 의 최종 합니다 그래서 it& 대접을 받지 못하고, 대신 이기트콘피그 셀명 정보기술 (it) 을 얻을 수 있는 '' 통과 및 간주되고 있는 것은 삽입됨 셀명 쉘로 - the end of the git 사용자 제공 '과' 간 '깃 (git)' 는 주장은 적용하십시오 자동으로 끝에 명령줄입니다. 여기서 우리는 이러한 인수만 aren& # 39, t, t want '- # 39 적용하십시오 그들이성년에 don& 깃 (git)', 즉 그 이전 주석문입니다 문자를 사용할 수 있습니다. 깃 (git) = 1 이 명령을 실행할 수 있습니다 '이' GIT_TRACE 안와 볼 수 있다 (작업).

이 사건을 '-' 끝 '라는 이름의 파일을 사용할 수 있는 경우 인수 및 신호를 w' 또는 'git diff' 로의 전환을 생각하신거야 참고하십시오.

약 $ @ '이' 이스케이프된 큰따옴표 유지하는 데 필요한 모든 사용자 제공 말을 인수만. ',' 문자가 없는 경우 &quot 이스케이프된 것 '이 아니라' 이기트콘피그 파서 이를 소비하는 쉘입니다.

참고: # 39 로 구문 분석, 알 수 없다 '-' 이기트콘피그 앨리어스가 doesn& 따옴표 특별히 ',', ',' 특수 문자는 유일한 &quot \' \n '및', ' (외부에서', '제시 &quot string). 따라서 ',' 항상 존재해야 한다고 해도 마치 it& &quot 이스케이프된 # 39 의 단일 인용 문자열 내에 (이 git 는 완전히 대한 회의적).

예를 들어, 이 중요하다. 배시 '명령어를 실행할 경우' 핸디 앨리어스가 apc® tree& # 39 의 루트. 이 잘못된 것입니다.

sh = !bash -c '"$@"' -

한 동안 수정하십시오 입니다.

sh = !bash -c '\"$@\"' -
해설 (1)

탑 투표 오토메이티드 작동하지 않는 모든 경우에 공백 때문에 에 따르면 패치합니다 컨텍스트로 있는 사용자 정의.

내가 개정됩니다 명령은 다음과 같습니다.

$ git diff -U0 -w --no-color | git apply --cached --ignore-whitespace --unidiff-zero

이 패치를 생성하는지 없이 컨텍스트입니다. # 39 는 짧은 패치 이후, shouldn& 문제가 될 수 없다.

또 한번의 수정번호 뭐한테 이미 다른 사용자에게 제공하는 .해당 앨리어스입니다.

addw = !sh -c 'git diff -U0 -w --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero' -
해설 (2)

그렇다면 다음과 같습니다.

git add `git diff -w --ignore-submodules |grep "^[+][+][+]" |cut -c7-`

파일의 이름을 얻을 수 있는 명령 δ1 박크로스 공백이 아닌 변경.

해설 (1)

깃 (git) 을 찾았다고 사전 확약 훅 제거하는 후행 공백. 그러나, 이 경우, 해당 can& # 39 을 사용할 수 있는 권한을 다른 유효한 솔루션이므로 않을 수 없다.

  #!/bin/sh

  if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then
     against=HEAD
  else
     # Initial commit: diff against an empty tree object
     against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
  fi
  # Find files with trailing whitespace
  for FILE in `exec git diff-index --check --cached $against -- | sed '/^[+-]/d' | sed -r 's/:[0-9]+:.*//' | uniq` ; do
     # Fix them!
     sed -i 's/[[:space:]]*$//' "$FILE"
  done
  exit
해설 (2)

먼저 경우 고려해보십시오 뒤에 공백은 의도적. 등 여러 프로젝트를 리눅스 커널이 mizilla, 드루팔 및 커버로스 (위키백과) 에서 이름을 몇 페이지에 스타일) 등을 후행 공백. 리눅스 커널 에서 문서:

&gt. 괜찮은 편집기 및 don& 남겨두십시오 # 39 get a, t &gt. 공백 끝에 선.

문제는 이 경우, 다른 길이 약. 이전 커밋한 (그리고 아마도 현재 수준들과) 이 지침을 따르지 않았다.

39; d 내기 i& 정말 문제가 될 수 없는 후행 공백, 및 수정 itopia 변했다니까 건 아니다. 다른 사용자가 동일한 문제가 발생할 수도 있습니다 틀렸다니까. # 39, s 도 it& 가능성이 기고자에 %hsmb 오른길로 비인식 언로드하기 이들이 후행 공백 추가 있다.

깃 (git) 하고, 그렇지 않으면 문제가 아닌 재구성합니다 무시하려면 또는 비활성화해도 너회의 편집기에는 i& 바람직한 기능을 통해 프로젝트를 시작으로, 메일링 리스트, d # 39 를 설명하는 문제입니다. 후행 공백 대응하기 위해 많은 편집자 (및 git 자체) 을 구성할 수 있습니다.

해설 (2)