Bạn muốn có tùy chọn chạy khô cho bất kỳ lệnh nào, bất kể ý tưởng được cho là "bạn không cần chạy khô để thanh toán vì bạn có thể nhận danh sách các khác biệt theo cách khác".
Bạn không muốn tùy chọn chạy khô để có danh sách các sự khác biệt, bạn muốn chạy thử để xác minh "Điều gì sẽ xảy ra khi tôi nhấn enter?" trước khi bạn làm điều đó thật. Có một sự khác biệt. Bạn đang kiểm tra hành vi thực tế/chính xác của một chương trình khi có thể có một số sự mơ hồ nếu tất cả những gì bạn đã làm là đọc hướng dẫn sử dụng.
Tôi có một dự án lạ nơi repo được đặt ngay trong '/'. Vì vậy, có một thư mục '/.git' và '/.gitignore' và '/.gitmodules'. /.gitignore và /.Các tệp gitmodules được theo dõi trong repo và đó là vấn đề bởi vì ngay cả khi người dùng nhà phát triển có quyền chỉnh sửa tệp, họ vẫn không có quyền cho git xóa và tạo lại tệp, vì không và có thể 't, có quyền ghi trên'/'chính nó. Nếu git chỉnh sửa các tập tin tại chỗ sẽ không có vấn đề, nhưng git xóa và thay thế, bởi vì người dùng nhận được một lỗi mà git không thể bỏ liên kết các tập tin. Trong quá trình phát triển một sự thay đổi cấu hình repo của chúng tôi, và một số định hướng cho các nhà phát triển theo để loại bỏ vấn đề này trong thời gian tới, trên đường đi tôi muốn biết những gì lệnh này sẽ làm:
git checkout master -- /.git*
và khác biến thể có thể như
git checkout master -- '/.git*'
và những người khác, thay đổi vỏ globbing và/hoặc nhìn thấy như thế nào git chính nó có thể giải thích các giá trị filespec thức. Nếu tôi thoát khỏi một '*' từ vỏ, sẽ git mở rộng một '*', hoặc nó sẽ xử lý nó như là một chữ? Nếu nó mở rộng, nó có bao gồm thư mục '/.git/' không? Nếu nó mở rộng nó, có một số cú pháp regex tôi có thể sử dụng có nghĩa là 'bất kỳ-không-rỗng-ký tự' như một '.' trong regex hoặc '?' trong vỏ globbing? etc etc
Tôi không muốn biết tệp nào khác nhau, tôi muốn kiểm tra hành vi chính xác của git để tìm phiên bản tốt nhất/đơn giản nhất của một lệnh hoặc tập lệnh bất thường.
Đối với điều đó, bạn thực sự muốn có tùy chọn chạy khô. Tôi đã biết các tệp khác nhau. Trong trường hợp này, MANY tệp sẽ khác nhau và tôi không muốn bất kỳ tệp nào trong số đó. Tôi chỉ muốn /.gitignore và /.gitmodules và không có gì khác.
Trong trường hợp này, tôi biết tôi có thể làm điều đó bằng cách chỉ định rõ ràng cả hai trên dòng lệnh.
git checkout master -- /.gitignore /.gitmodules
Nhưng tôi muốn để xem nếu có một globbing cú pháp ngắn mà sẽ nhận được cả hai tự động, tuy nhiên lý tưởng, không bao gồm các thư mục /.git. Và lý tưởng, tôi muốn tìm ra hình thức đơn giản nhất mà tôi có thể làm được. Tôi biết tôi có thể sử dụng vỏ để làm một số mở rộng ưa thích và rất cụ thể, nhưng nếu một cái gì đó như '/ git *' hoạt động, tôi muốn sử dụng nó hơn '/ git {i, m} *'
nhiệm vụ nhỏ và có một số câu trả lời đơn giản. Xin đừng nói cho tôi biết cách giải quyết VẤN ĐỀ CHÍNH XÁC NÀY mà không cần "git checkout --dry-run", hay nói cho tôi biết làm thế nào ngu ngốc để làm repo trong /, tôi cũng biết điều đó. Tôi đã biết một vài cách để hoàn thành công việc ngay lập tức của mình. Đó không phải là vấn đề. Nó có thể dễ dàng liên quan đến nhiều tập tin hơn hoặc một mẫu hình cầu phức tạp hơn vì nó sẽ không thuận tiện để chỉ liệt kê các tệp một cách rõ ràng, hoặc, nó có thể là một loại vấn đề hoàn toàn khác.
Điểm chung, nói chung, áp dụng cho bất kỳ lệnh nào ở bất kỳ đâu, kể cả git checkout, luôn có cách sử dụng cho tùy chọn chạy khô để kiểm tra hành vi của chính chương trình. Đọc hướng dẫn sử dụng hoặc --help không trả lời câu hỏi được trả lời bằng cách chạy khô.
Có lẽ tôi đang bối rối nhưng không phải bạn chỉ yêu cầu sự khác biệt giữa cây làm việc của bạn và chỉ mục? Chúng được hiển thị với 'git diff'. –
@TilmanVogel: Như bạn đã biết, lệnh 'git clean' sẽ xóa các tập tin không được theo dõi. nhưng 'git clean -n' sẽ không xóa các tệp, nó chỉ cho biết các tệp sẽ bị xóa là gì. Tôi chỉ muốn biết, Có tùy chọn như vậy trong lệnh git checkout. Cảm ơn. –
Ok, sau đó xem 'git help checkout' dễ dàng trả lời câu hỏi này là "không". Và tôi nghĩ lý do là 'git status' và' git diff' cùng nhau cung cấp tất cả thông tin tương ứng. Tôi cũng thích 'git citool' cho chế độ xem đó. Tất nhiên, câu chuyện là một câu chuyện khác khi sử dụng 'git checkout' trên một thứ khác ngoài chỉ mục. –