Câu hỏi Thông điệp “viết lại… (90%)” sau một cam kết git nghĩa là gì? [bản sao]


Câu hỏi này đã có câu trả lời ở đây:

Khi git thực hiện một cam kết nó ghi đè các tệp nhị phân với một cái gì đó tương tự như rewrite foobar.bin (76%). Đó là gì %? Phần trăm được thay đổi hay phần trăm được giữ lại từ tệp cũ hơn. Tôi biết rằng git sử dụng một đồng bằng nhị phân cho các tập tin, nhưng tôi chỉ không biết bao nhiêu của một viết lại các% đại diện và nó không có vẻ là trong trang trợ giúp cho git help commit.

Cảm ơn!


76
2018-06-25 21:07


gốc


Cũng có thể liên quan đến stackoverflow.com/questions/244639/… - VonC
Git thực sự lưu trữ một bản sao đầy đủ của từng cam kết cho mỗi tệp (dưới dạng "blob"). Khi bạn yêu cầu một sự khác biệt, Git truy xuất cả hai bản sao của tệp đang được đề cập và chạy một điểm khác tại thời điểm đó. Sự khác biệt thực sự không được lưu trữ ở bất cứ đâu. Điều này không thực sự trả lời câu hỏi của bạn nhưng chỉ ra rằng suy nghĩ của Git như lưu trữ "deltas nhị phân" là không hoàn toàn chính xác. - Greg Hewgill


Các câu trả lời:


Đó là thước đo chỉ số tương tự. Chỉ số tương tự là tỷ lệ phần trăm của các dòng không thay đổi. git nghĩ rằng tệp của bạn là văn bản.


50
2018-06-25 22:18



Tôi tin rằng các chỉ số tương tự là không liên quan đến việc liệu Git nghĩ rằng tập tin là văn bản. Không chắc chắn về điều đó, vì một số tệp nhị phân có thể trông rất giống văn bản. - Greg Hewgill


Tôi tin rằng Martin là chính xác, con số đó là chỉ số tương tự. Từ git-diff trang người đàn ông:

Chỉ số tương tự là phần trăm   của các dòng không thay đổi và   chỉ số khác nhau là tỷ lệ phần trăm   của các dòng đã thay đổi. Nó được làm tròn xuống   số nguyên, theo sau là dấu phần trăm.    Giá trị chỉ số tương tự của 100% là   do đó dành riêng cho hai tệp bằng nhau,   trong khi 100% khác nhau có nghĩa là không   dòng từ tệp cũ đã biến nó thành   một cái mới.

Lần đầu tiên tôi nhìn thấy số tôi nghĩ rằng các tệp nhị phân của tôi đã thay đổi đáng kể !.


19
2017-10-18 14:42



Vì vậy, nếu tôi thấy một sự đổi tên, sau đó là 67% thì tôi sẽ giải thích rằng tệp không chỉ được đổi tên mà còn có 67% tệp gốc vẫn còn hiện diện? Cấp rằng có thể có nghĩa là ai đó đã chỉnh sửa 33% tệp gốc trong khi đổi tên. Nó sẽ có lợi hơn nếu đổi tên là một cam kết duy nhất và sau đó chỉnh sửa của tập tin đã xảy ra? Điều đó có cho đầu ra của chỉ số tương tự đổi tên thành 100% không? Điều đó trong lý thuyết sẽ ngụ ý rằng việc đổi tên thành công và không có dữ liệu bị mất? Tôi thấy điều này lần đầu tiên ngày hôm nay và tôi muốn chắc chắn rằng tôi hiểu đó là mục đích sử dụng. - Eric


Nó đang cố gắng viết lại CR và LF thành một định dạng nhất quán. Nghĩa là, nó không thấy tệp nhị phân của bạn dưới dạng nhị phân. Để buộc git thực hiện việc này đúng cách, hãy đặt dòng sau vào .gitattributes:

*.bin -crlf -diff -merge

Từ trang này điêu đo co nghia la:

tất cả các tệp có phần mở rộng [.bin] sẽ   không có nguồn cấp dữ liệu đường truyền / đường truyền   các bản dịch đã hoàn thành, sẽ không bị phân biệt và   hợp nhất sẽ dẫn đến xung đột   để nguyên tệp gốc.


-4
2018-06-25 21:35



Đây không phải là những gì "viết lại" có nghĩa là trong bối cảnh của câu hỏi. Git đang nói "này có vẻ như bạn đã viết lại tập tin này nhưng để lại 76% của nó giống như trước đây". - Greg Hewgill