2015-09-03 14 views
7

Tôi đang làm việc trong môi trường làm việc chỉ dành cho cửa sổ với các nhà phát triển sử dụng tất cả các loại công cụ để chỉnh sửa tệp của họ. Chúng tôi đang sử dụng .git cùng với ngăn xếp cổ điển để phiên bản mã của chúng tôi. Tôi thích gần như tất cả.Làm thế nào để thay đổi hành vi của trạng thái git hiển thị các tệp đã sửa đổi mà cuối cùng không được cam kết?

Tôi vừa mới kết thúc chiến đấu một cuộc chiến dài và khó khăn để quấn đầu của tôi xung quanh như thế nào và tại sao git giải thích kết thúc dòng và những gì core.autocrlf nào. Chúng tôi đã quyết định sử dụng core.autocrlf true và tất cả đều tốt.

Tôi rất thích biết làm thế nào để thay đổi hành vi này của git status:

  • Tôi có một tập tin với CRLF kết thúc dòng.
  • tôi thay đổi kết thúc dòng để LF

    $ git status 
    On branch somebranch 
    Changes not staged for commit: 
        (use "git add <file>..." to update what will be committed) 
        (use "git checkout -- <file>..." to discard changes in working directory) 
    
    modified: Src/the_file_i_changed_to_LF.js 
    
  • Nhưng sau đó ...

    $ git commit -a 
    warning: LF will be replaced by CRLF in Src/the_file_i_changed_to_LF.js. 
    The file will have its original line endings in your working directory. 
    On branch somebranch 
    nothing to commit, working directory clean 
    

Để này một:

  • Tôi có một tập tin với CRLF kết thúc dòng.
  • tôi thay đổi kết thúc dòng để LF

    $ git status 
    On branch somebranch 
    nothing to commit, working directory clean 
    
  • có ý nghĩa vì không có gì sẽ được cam kết anyway.

Điều này có khả thi không?

Tôi tin rằng bản sao có thể không chứa câu trả lời mà tôi đang tìm kiếm. Tôi muốn nhấn mạnh rằng tôi làm (nghĩ rằng tôi) biết những gì thiết lập của tôi core.autocrlf true hiện và muốn giữ nó theo cách đó. Những gì tôi quan tâm là không phát hiện được các thay đổi trong số git status. Tuy nhiên, điều này sẽ không được cam kết hoặc hiểu tại sao điều này là không thể.

Trả lời

1

Khi bạn đặt core.autocrlf true tất cả các tệp trong thư mục hoạt động của bạn sẽ có kết thúc dòng CRLF (coi ít dòng thực tế kết thúc trong kho lưu trữ). Đối với hầu hết người dùng windows, điều này là đủ tốt.

Từ câu hỏi của bạn Tôi hiểu rằng bạn muốn có các tệp danh bạ đang hoạt động (= tệp cục bộ) với LF. Vì vậy, ở đây bạn nên sử dụng core.autocrlf input. Điều này sẽ cung cấp cho bạn dòng chính xác kết thúc như trong kho (nhưng nó vẫn sẽ đảm bảo tất cả các check-in được thực hiện với LF).

Đọc thêm về sự khác biệt của giá trị đúng, sai, nhập trong số answer này.

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