[git] 공백 충돌없이 병합

수천 줄의 코드가 바뀌어 줄 끝에서 공백을 제거하고 탭 앞의 공백을 제거하는 커밋이있는 문제가 있습니다.

이 프로젝트에 대한 약 50 개의 풀 요청이 있으며, 커밋이 병합 될 때 충돌이 발생합니다. 미래 커밋을 병합 할 때 그중 하나가 공백으로 바뀌는 충돌을 무시하도록 git을 설정할 수있는 방법이 있습니까?

자식 자체를 수정하거나 타사 도구를 사용하는 것은 불가능하지만 후크를 사용하는 것이 좋습니다.



답변

 git merge -Xignore-all-space

또는 (보다 정확한)

 git merge -Xignore-space-change

병합 중 모든 공간 관련 충돌을 무시하기에 충분해야합니다.

git diff 참조하십시오 :

--ignore-space-change

공백 양의 변화를 무시하십시오.
이것은 줄 끝의 공백을 무시하고 하나 이상의 공백 문자의 다른 모든 시퀀스를 동등한 것으로 간주합니다.

--ignore-all-space

행을 비교할 때 공백을 무시하십시오.
한 줄에 공백이 있고 다른 줄에는없는 경우에도 차이를 무시합니다.

ks1322 의견에 좋은 조언을 추가합니다.

--no-commit실제 커밋 전에 병합 을 병합 하고 검토하는 것이 좋습니다.


OP 칼럼 맥레이는 이 경우, 병합은 중단없이 진행하고, 풀 요청 패치에 포함 된 후행 공백은 로컬 파일에 적용됩니다, 그것을보고합니다.
그러나, OP는 상기 후미 공간을 처리하는 사전 커밋 후크를 사용한다.
( 이것 과 비슷한 것으로 가정하고 여기 에서도 참조하십시오 ).


OP의 사전 커밋 후크는 다음과 같습니다.

후행 공백을 제거하는 것 외에도 탭 앞의 1 ~ 3 개의 공백을 제거하고 (탭 너비가 4로 설정 됨) EOL을 추가합니다.
EOL을 추가하는 코드가 창에서 파일을 삭제하지만 복제 할 수는 없다는보고가있었습니다.


답변