2013-02-26 37 views
5

Tôi có một chiếc MacBook và đang chạy Windows trong một máy ảo Parallels. Sự phát triển của tôi chủ yếu là trong Visual Studio, nhưng tôi thích sử dụng Git với vỏ Mac (giống như nó tốt hơn so với những gì có sẵn cho Windows).Sự cố kết thúc dòng giữa Mac và Windows

Khi tôi làm một git diff để xác định những gì đã thay đổi giữa các cam kết, tôi nhận được dòng ngôn ngữ kết thúc "thay đổi" làm cho git nghĩ nhiều hơn đã thay đổi thực sự có.

Tôi biết đây là vấn đề tuổi già và tôi đã thực hiện rất nhiều nghiên cứu với nhiều đề xuất khác nhau từ rất nhiều người, nhưng tôi không thể giải quyết vấn đề này. Thông tin đầy hứa hẹn nhất được tìm thấy trong số SO Post này nhưng nó không giải quyết được vấn đề của tôi.

Dưới đây là một số dòng có liên quan từ .gitconfig tôi ...

[core] 
    autocrlf = false 
    safecrlf = false 

Ngoài ra, tôi có một .gitattributes trong thư mục gốc của repo của tôi mà chỉ chứa ...

* text eol=crlf 

gì tôi có thể làm gì để khiến Git ngừng suy nghĩ thay đổi kết thúc của dòng là những thay đổi thực sự khi thực hiện một sự khác biệt? Một lần nữa, tôi đang sử dụng một vỏ Mac để xem các tập tin Windows, vì vậy đây có thể là một phần của vấn đề của tôi.

Cảm ơn!

+0

có bạn có thể giải quyết điều này? Nó cũng gây rắc rối cho đội của tôi. Làm tôi phát điên. –

+0

Tôi mới bắt đầu sử dụng Git từ phía Windows. Tôi không thể giải quyết nó. Nhưng sử dụng Git từ phía Windows tránh được vấn đề. –

+0

Bất kỳ cơ hội nào các bạn đã giải quyết vấn đề này? –

Trả lời

1

Sử dụng một tiện ích chuyển đổi ví dụ như Perl, perl -i -pne "s/\n/\r\n/g" filename

hoặc unix2dosdos2unix.

cũng http://en.wikipedia.org/wiki/Newline#Conversion_utilities

Xem Đối với cấu hình của GIT thấy câu trả lời khác: Force LF eol in git repo and working copy

+0

Cảm ơn bạn đã phản hồi. Tôi muốn giữ các dòng kết thúc CRLF trên các tệp Windows, nhưng khi nhìn vào sự khác biệt từ phía Mac với git, không thấy một dòng khác kết thúc dưới dạng thay đổi. Tôi nghĩ tiện ích chuyển đổi sẽ thực sự thay đổi kết thúc dòng. –

2

tôi bí danh gdiff tới:

git diff -w origin/`git branch | sed --quiet "s/* \(.*\)/\1/p"` 

nhưng bạn chỉ có thể làm:

git diff -w 
Các vấn đề liên quan