2012-08-06 28 views
14

Có cách nào để xác định kết thúc dòng trong kho lưu trữ git hiện có không?Có cách nào để xác định kết thúc dòng trong repo git hiện có không?

Nếu tôi sao chép kho lưu trữ hiện tại, làm thế nào để tôi xác định được core.autocrlf nào được người tạo sử dụng?

Tôi vẫn không chắc chắn whats thiết lập tốt nhất cho core.autocrlf ví dụ trên một ô cửa sổ (vì có nhiều ý kiến: Distributing git configuration with the code hoặc https://help.github.com/articles/dealing-with-line-endings)

Bonus câu hỏi: Bạn có thể xác định trên cửa sổ (với công cụ tiêu chuẩn) nếu một repo có kết thúc dòng hỗn hợp (bởi thiết lập core.autocrlf sai) thông qua tất cả các cam kết?

+0

Câu hỏi đầu tiên này được trả lời [tại đây] (http://stackoverflow.com/q/25697254/1436671). –

Trả lời

2

tôi vẫn muốn xác nhận rằng thiết lập (core.autocrlf) để false, như tôi đã giải thích trong " Distributing git configuration with the code" mà bạn đề cập, và sử dụng eol gitattributes directive cho một kiểm soát nhiều hạt mịn.

Nói như vậy, để phát hiện một kết thúc dòng hỗn hợp:

  • thiết core.autocrlf để true
  • git clone repo của bạn
  • git diff: nếu so sánh phiên bản có thể nhìn thấy ngay sau khi clone của bạn ... một số eol tự động chuyển đổi chỉ diễn ra trong cây làm việc.

Update 2016 (sau 4 năm): a more modern way to detect eol changes:

git -c color.diff.whitespace="red reverse" diff -R -- afile 
10

Để kiểm tra những gì kết thúc dòng thực sự đã được cam kết trong kho (bất kể thiết lập core.autocrlf của bạn), hãy thử như sau:

git grep -I --files-with-matches --perl-regexp '\r' HEAD 

(-I có nghĩa là không nên xem các tệp nhị phân.)

+0

msysgit của tôi không được biên soạn với USE_LIBPCRE, công việc này có quá 'git grep -I --files-with-matches --basic-regexp '\ ​​r' HEAD' (không nhận được kết quả nào ngay bây giờ cũng với '\ r \ n ') –

+2

Hãy thử điều này: 'git grep -I --files-with-matches $' \ r 'HEAD' – robinst

+0

Lệnh này trả về tất cả các tệp trong HEAD có * nix kết thúc, hoặc? 'Git grep -I --files-with-matches $ '\ r \ n' HEAD' có cung cấp kết thúc dòng DOS không? –

1

Điểm mấu tốt nhất kết thúc thực tế là ở đây: https://stackoverflow.com/a/10855862

Để xác định kết thúc dòng trong một kho git hiện:

  1. Đặt core.autocrlf-false, vì vậy nó sẽ không thay đổi kết thúc tập tin trong khi truyền tập tin.
  2. git clone repo của bạn cho ví dụ. trong một thư mục mới.
  3. Sử dụng trình chỉnh sửa văn bản hiển thị kết thúc dòng để mở tệp (ví dụ: PHPStorm). Bạn nên mở một số tệp dưới dạng kết thúc dòng có thể khác với tệp.

Bạn không thể xác định core.autocrlf nào được người tạo sử dụng vì nó là cấu hình cục bộ ngoại trừ repo có tệp .gitattributes.

Trên Windows nếu bạn không sử dụng .gitattributes chỉ sử dụng core.autocrlf đúng như được đặt theo mặc định.

Các vấn đề liên quan