2010-11-10 24 views
37

Tôi đang sử dụng hệ điều hành US-English   X 10.6.4 và cố lưu trữ tệp có ký tự Châu Á trong tên của nó trong kho lưu trữ Git.Cách xử lý ký tự Châu Á trong tên tệp trong Git trên OS X

OK, chúng ta hãy tạo ra như một tập tin trong một cây làm việc Git:

$ touch どうもありがとうミスターロボット.txt 

Git đang hiển thị nó như bát phân thoát UTF-8 dạng:

$ git version 
git version 1.7.3.1 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
nothing added to commit but untracked files present (use "git add" to track) 

Thật không may, tôi không có thể thêm nó vào kho lưu trữ Git:

$ git add どうもありがとうミスターロボット.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
nothing added to commit but untracked files present (use "git add" to track) 

Git đơn giản bỏ qua tệp này.

Sử dụng ký tự đại diện làm việc:

$ git add *.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Changes to be committed: 
# (use "git rm --cached <file>..." to unstage) 
# 
# new file: "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
# 

nhưng tôi muốn gọi lệnh Git từ một ứng dụng cho một tên tập tin cụ thể. Tôi không có tùy chọn để phát minh các mẫu ký tự đại diện khớp chính xác với tệp này nhưng không có ai khác.

Đây có phải là lỗi đã biết của Git hoặc tôi không sử dụng Git chính xác không?

+3

Tôi nghĩ rằng đây là lỗi đã biết giữa git và OSX: http://thread.gmane.org/gmane.comp.version-control.git/70688 –

+0

Tôi không nghĩ rằng nó có liên quan đến sáng tác/phân hủy nhân vật như tiếng Nga. – Mot

+0

@mklhmnn: Bạn có chắc chắn rằng không có nhân vật nào trong ví dụ của bạn không có các hình thức bị phân hủy và được biên dịch trước? – JeremyP

Trả lời

52

Git trích dẫn bất kỳ ký tự nào không phải ascii theo mặc định, không chỉ các ký tự Châu Á. Có một tùy chọn để vô hiệu hóa hành vi trích dẫn này.

Bạn có thể vô hiệu hóa nó bằng cách sử dụng lệnh sau:

git config --global core.quotepath false 

Hoặc cách khác, bằng cách thêm đoạn mã sau vào tập tin cấu hình git của bạn ($ HOME/.gitconfig thường)

[core] 
    quotepath = false 

Sau điều này, git sẽ hiển thị tên tập tin của bạn chính xác như họ đang có.

Đối với vấn đề khác của bạn, git không thêm một tập tin với các nhân vật châu Á, tôi chỉ có thể đoán rằng nó đã làm với mã hóa mà git sử dụng là không giống như mã hóa thiết bị đầu cuối của bạn sử dụng. Tôi hy vọng một người khác có thể nhảy vào và giải thích một chút.

+0

Trong thử nghiệm giới hạn của tôi (sử dụng Git 1.7.3.2 trên Ubuntu), một khi tôi vô hiệu hóa 'core.quotepath', git sẽ hiển thị tên tập tin như mong đợi. Ngoài ra, ngay cả khi đã bật 'core.quotepath', việc thêm rõ ràng sẽ cập nhật chỉ mục như mong đợi, do đó, vấn đề ban đầu có thể là lỗi đã được khắc phục trong các phiên bản Git mới hơn. –

+0

Bạn có biết liệu trích dẫn này có thể bị tắt hay không bằng cách đặt biến môi trường hoặc chuyển tham số dòng lệnh tới Git? – Mot

+1

Mặc dù vấn đề của tôi hơi khác nhau, một nhân vật accénted, không phải là một Châu á, nhưng, lời khuyên này đã không làm việc cho tôi. –

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