2016-01-25 11 views

Trả lời

4

Bạn đang sử dụng soạn thảo văn bản Atom dưới Windows?
Trả về vận chuyển của Windows là \r\n trong khi đó là \n trong Unix.
^M (0xD hoặc \r) là ký tự trả về trong Windows.
Tôi nghĩ rằng, tập tin đó trước đó đã được lưu dưới Unix (và đã có \n trên mỗi dòng), vì vậy Atom đang thêm \r theo yêu cầu của Windows.

Để biết thêm thông tin bạn có thể thấy thisthis

+5

Atom sẽ hiển thị mà dòng kết thúc nó được sử dụng ở góc dưới bên phải của thanh trạng thái. Xem plugin [tài liệu] (https://github.com/atom/line-ending-selector). Thay đổi nó ở đó sẽ sửa đổi kết thúc dòng cho tệp đó. Trong 'Settings> Packages> line-ending-selector', bạn có thể đặt dòng mặc định kết thúc cho các tệp mới. –

+0

@roman, tôi luôn sử dụng mac. –

+0

Từ bình luận của @ DavidUlrich, tôi đào abit vào gói. Từ bài tập trên, tôi thấy rằng các tệp trong repo i đang làm việc đều là CRLF. Tôi kết luận rằng kể từ khi dự án này được thực hiện bởi một nhà phát triển khác, rất có thể, chúc phúc cho anh ta, anh ta đang sử dụng các cửa sổ. –

1

Hầu hết các giải pháp tôi đã tìm thấy trực tuyến liên quan đến sử dụng sed, vi hoặc emacs. Tôi tìm thấy một giải pháp hoạt động trực tiếp trong Atom (và có lẽ là bất kỳ trình soạn thảo văn bản nào), không cần dòng lệnh.

Chọn tất cả các trả lại hoặc nhận bộ chọn ở đầu mỗi dòng rồi xóa và nhấn trở lại. Nó có thể mất một giây, nhưng nó sẽ loại bỏ tất cả các ký tự^M.

Điều này có thể sẽ làm hỏng thụt lề của bạn, nhưng bạn có thể tự động thụt lề. Điều này có thể không hiệu quả nếu bạn có nhiều tệp bạn cần thực hiện việc này, nhưng đó là giải pháp nhanh chóng và dơ bẩn cho chỉ một tệp.

12

Tôi đang sử dụng Ubuntu Linux và nhận thấy^M (Vận chuyển trở lại, Cấp nguồn) trong thời gian git diff.

Bằng cách nào đó CRLF được chọn ở dưới cùng của thanh trạng thái:

CRLF in Atom status bar

tôi chỉ đơn giản nhấp vào nó và thay đổi để LF:

LF in Atom Status Bar

Nó dường như được đặt trên một cơ sở từng tập tin, do đó sẽ cần phải được thay đổi cho mỗi tập tin vấn đề.


Trong trường hợp của tôi bằng cách nào đó tất cả các dòng kết thúc đã được thay đổi để git diff là một biển đỏ. Tôi đã sử dụng sau đây để xác định 'thực tế' thay đổi:

git diff --ignore-space-at-eol 

Tuy nhiên, git commit vẫn sẽ chôn 'thực tế' những thay đổi trong lịch sử cam kết vì vậy tôi:

  1. chạy git stash save
  2. kết thúc dòng thay đổi trong atom
  3. chạy git commit -am "fix line endings"
  4. chạy git stash apply

Bây giờ các kết thúc dòng đã biến mất và các cam kết có thể được thực hiện trên một sự khác biệt chính xác.

+0

O man! bạn thực hiện có thể ngày. Tôi/m không chắc chắn lý do tại sao nó thay đổi để CRLF nhưng anyway. cám ơn vì cái này. – ngelx

3

Kiểm tra cuối trình chỉnh sửa có thể đã thay đổi kết thúc dòng tệp của bạn.

Thông thường nó là LF cho Unix

enter image description here

và CRLF cho các cửa sổ

enter image description here

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