Câu trả lời này có vẻ phù hợp vì OP đề cập đến nhu cầu về giải pháp đa hệ điều hành. Bài viết trợ giúp Github này trình bày chi tiết các phương pháp có sẵn để xử lý các dòng kết thúc chéo hệ điều hành. Có các phương pháp tiếp cận toàn cầu và theo từng kho để quản lý kết thúc dòng chéo hệ điều hành.
Cách tiếp cận toàn cầu
Định cấu hình xử lý phần cuối dòng Git trên Linux hoặc OS X:
git config --global core.autocrlf input
Định cấu hình xử lý phần cuối dòng Git trên Windows:
git config --global core.autocrlf true
Cách tiếp cận mỗi repo:
Trong thư mục gốc của repo của bạn, tạo ra một .gitattributes
tập tin và xác định cài đặt dòng kết thúc cho các tập tin dự án của bạn, một dòng tại một thời điểm trong các định dạng sau: path_regex line-ending-settings
nơi line-ending-settings
là một trong những điều sau đây:
- bản văn
- nhị phân (các tệp mà Git không nên sửa đổi phần cuối dòng)
Các text
giá trị có thể được cấu hình hơn nữa để hướng dẫn Git về cách xử lý kết thúc dòng cho các tập tin phù hợp:
text
- Thay đổi phần cuối dòng thành phần cuối dòng gốc của OS.
text eol=crlf
- Chuyển đổi kết thúc dòng thành CRLF
khi thanh toán.
text eol=lf
- Chuyển đổi kết thúc dòng thành LF
khi thanh toán.
text=auto
- Mặc định hợp lý để xử lý dòng tùy theo quyết định của Git.
Đây là nội dung của một tệp .gitattributes mẫu:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
Tìm hiểu thêm về cách làm mới repo của bạn sau khi thay đổi cài đặt kết thúc dòng tại đây . Tldr:
sao lưu các tệp của bạn với Git, xóa mọi tệp trong kho lưu trữ của bạn (ngoại trừ thư mục .git), sau đó khôi phục tất cả các tệp cùng một lúc. Lưu các tệp hiện tại của bạn trong Git để không có tác phẩm nào của bạn bị mất.
git add . -u
git commit -m "Saving files before refreshing line endings"
Xóa chỉ mục và buộc Git quét lại thư mục đang làm việc.
rm .git/index
Viết lại chỉ mục Git để chọn tất cả các kết thúc dòng mới.
git reset
Hiển thị các tệp được viết lại, chuẩn hóa.
Trong một số trường hợp, đây là tất cả những gì cần phải làm. Những người khác có thể cần phải hoàn thành các bước bổ sung sau:
git status
Thêm lại tất cả các tệp đã thay đổi của bạn và chuẩn bị cho một cam kết. Đây là cơ hội để bạn kiểm tra xem tệp nào, nếu có, không thay đổi.
git add -u
Hoàn toàn an toàn khi thấy nhiều thông báo ở đây có nội dung [s] "cảnh báo: CRLF sẽ được thay thế bằng LF trong tệp."
Viết lại tệp .gitattributes.
git add .gitattributes
Cam kết các thay đổi đối với kho lưu trữ của bạn.
git commit -m "Normalize all the line endings"