git은 내가 작은 변경을 할 때마다 내 파일 중 하나를 다시 작성한다고 생각합니다.

StackOverflow https://stackoverflow.com/questions/244639

  •  05-07-2019
  •  | 
  •  

문제

중간 크기의 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

차이점을 보여줄 때 선이 변경되는 것을 무시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top