git은 내가 작은 변경을 할 때마다 내 파일 중 하나를 다시 작성한다고 생각합니다.
문제
중간 크기의 Java 파일이 있습니다. 내 파일 중 하나 인 BuildTable.java를 변경할 때마다 GIT는 한 줄만 있더라도 큰 변화로보고합니다. BuildTable.java는 약 200 줄 이며이 커밋의 변경은 한 줄만 변경되었습니다.
git-diff gouputs 님 :
--- a/src/BuildTable.java
+++ b/src/BuildTable.java
@@ -1 +1 @@
-import java.io.FileNotFoundException;^Mimport java.io.FileReader;^Mimport java.io.InputStreamReader;^Mimport java.io.PushbackReader;^Mimport java.util.ArrayList;^Mimport
\ No newline at end of file
+import java.io.FileNotFoundException;^Mimport java.io.FileReader;^Mimport java.io.InputStreamReader;^Mimport java.io.PushbackReader;^Mimport java.util.ArrayList;^Mimport
\ No newline at end of file
git -commit -a를 수행 한 후
Created commit fe43985: better error notifications
3 files changed, 54 insertions(+), 50 deletions(-)
rewrite src/BuildTable.java (78%)
이 파일을 바이너리로보고 있습니까? 이것이 문제입니까? 그렇다면 어떻게 해결해야합니까?
해결책 2
이 문제를 해결하기 위해, 나는 핵심 GIT 설정을 변경할 필요가 없었습니다. 생성되는 기본 라인 엔딩이 괜찮 았기 때문에이 특정 파일이 엉망이되었습니다. 수정하기 위해 VIM을 열고 다음 명령을 실행했습니다.
:%s/^M/\r/g
"^m"을 입력하려면 ctrl-v를 입력 한 다음 ctrl-m을 입력해야합니다.
다른 팁
분명히 Git은 Mac 스타일 라인 엔딩을 좋아하지 않습니다 (CR 만 해당). Diff 알고리즘은 LF를 라인 분리기로 사용합니다.
파일을 수정하여 Wind
세트 core.autocrlf
그리고 core.safecrlf
~와 함께 git-config
. 이로 인해 GIT는 객체 저장소에서/로 전송할 때 라인 엔딩을 자동으로 변환하게됩니다. "새로운"결말을 저장하기 위해 커밋해야 할 수도 있습니다.
붙여 넣은 예에서 판단하면 "구식 Mac 라인 엔딩"으로 고통받을 수도 있습니다 (감사합니다. DDAA 그리고 찰스 베일리 힌트) CR
아무것도없는 s LF
, Git이 처리하지 않은 경우. 이것이 사실이라면 (16 진 편집자로 확인하십시오)와 같은 도구를 사용하십시오. recode
이 쓰레기를 적절한 것처럼 21 세기 형식으로 번역하려면 LF
-만 유닉스 라인 엔딩.
git diff -b
차이점을 보여줄 때 선이 변경되는 것을 무시합니다.