Làm thế nào để thực hiện git bỏ qua các thay đổi trong trường hợp?


106

Tôi không chắc điều gì đang xảy ra ở đây, nhưng đôi khi một tệp cụ thể trong kho lưu trữ của tôi sẽ thay đổi trường hợp tên của nó. ví dụ,:

trước: File.h

sau: file.h

Tôi không thực sự quan tâm tại sao điều này lại xảy ra, nhưng điều này khiến git nghĩ rằng đó là một tệp mới, và sau đó tôi phải đi đổi lại tên tệp. Bạn chỉ cần thực hiện git bỏ qua thay đổi trường hợp?

[sửa] Tôi nghi ngờ rằng Visual Studio đang làm điều gì đó kỳ lạ với tệp cụ thể đó, vì nó dường như xảy ra thường xuyên nhất khi tôi mở và lưu nó sau khi thay đổi. Tuy nhiên, tôi không có bất kỳ cách nào để sửa lỗi trong VS, nhưng tôi hy vọng git sẽ có khả năng hơn một chút.


1
V / v: Visual Studio lưu tệp bằng chữ thường Bạn đang sử dụng phiên bản Visual Studio nào? Lần cuối tôi đã kiểm tra điều này có vẻ tốt hơn trong phiên bản 2008. Vào năm 2005, lỗi này dường như đã xảy ra khi các tệp được mở thông qua trình gỡ lỗi thay vì trình khám phá giải pháp.
Adam Mitz

Trên thực tế, đây là năm 2005. Tuy nhiên, không có cơ hội nâng cấp trong một thời gian.
1800 INFORMATION

Câu trả lời:


177

Kể từ phiên bản 1.5.6, có một ignorecasetùy chọn có sẵn trong [core]phần.git/config

ví dụ: thêm ignorecase = true

Để thay đổi nó chỉ cho một repo, từ thư mục đó chạy:

git config core.ignorecase true

Để thay đổi nó trên toàn cầu:

git config --global core.ignorecase true

21
git config core.ignorecase true hoặc git config --global core.ignorecase true để áp dụng trên toàn cầu.
Aaron Jensen

@graywh: Nó ghi nhận trong git-config dưới core.ignorecase ( kernel.org/pub/software/scm/git/docs/git-config.html )
Bến Zerglings

4
Cảm ơn, cuối cùng tôi đã tìm ra lý do tại sao git không tính đến các thay đổi trong trường hợp của tôi. ignorecase = falseđã thực hiện thủ thuật, nó được mặc định là true-_-
Alex C.

15

Bạn có thể buộc git đổi tên tệp theo cách riêng với lệnh này:

git mv --cached name.txt NAME.TXT

Lưu ý rằng điều này không thay đổi trường hợp của tệp trong bản sao đã kiểm tra của bạn trên phân vùng Windows, nhưng git ghi lại thay đổi cách viết hoa và bạn có thể cam kết thay đổi đó. Các đợt kiểm tra trong tương lai sẽ sử dụng cách viết hoa mới.


1
"error: tùy chọn không xác định` được lưu trong bộ nhớ cache '. " Nó cũng không được liệt kê trong tài liệu: git-scm.com/docs/git-mv
Alex

12

Trong phiên bản git 1.6.1.9 cho windows, tôi thấy rằng "ignorecase = true" trong cấu hình đã được đặt theo mặc định.


7
Có, và khi bạn làm việc với các tệp Java, bạn muốn cài đặt này được đặt thành false, nếu không, bạn có thể gặp rắc rối khi thực hiện tái cấu trúc như vậy (lớp HTMLParser trở thành HtmlParser hoặc ngược lại).
PhiLho

tương tự cho phiên bản git 2.10.1.windows.1
Kars Barendrecht

3
Tôi biết điều này là cũ, nhưng việc đặt bỏ qua thành sai trên windows là vô nghĩa vì Windows là một hệ điều hành không phân biệt chữ hoa chữ thường. Điều này áp dụng cho dù bạn đang làm việc với Java hoặc (thở hổn hển!) C # hay bất kỳ thứ gì khác.
ingyhere

5

Tình huống được mô tả trong câu hỏi hiện đang tái diễn với Mac OS X, phiên bản git> = 1.7.4 (tôi nghĩ vậy). Cách khắc phục là đặt ignorecase = false và đổi tên các tệp chữ thường (git đã thay đổi theo cách đó, không phải Visual Studio) trở lại UsualCase của chúng bằng tay (tức là 'mv myname MyName').

Thêm thông tin ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.