2011-12-20 18 views
5

Tôi vừa phát hiện ra rằng một trong các tệp thử nghiệm của tôi thiếu khoảng 20 dòng ở trên cùng.Làm cách nào để tìm ra khi một số phần của tệp bị xóa trong git?

Gần đây tôi đã cố gắng để làm chủ VIM, vì vậy tôi đoán bằng cách nào đó tôi đã quản lý để xóa những dòng đó mà không cần tôi chú ý, và sau đó cam kết nó vào kho lưu trữ.

Bây giờ, câu hỏi là, cách tốt nhất để tìm hiểu khi nào điều này xảy ra? Tôi làm cách nào để biết thời điểm đã bị xóa?

Trả lời

5

Tìm một R phiên bản nơi những dòng tồn tại, sau đó sử dụng

git blame --reverse $R..HEAD <file> 

Điều này sẽ cho bạn biết ai xóa chúng.

Nếu bạn không thể tìm thấy một phiên bản như vậy, nhưng bạn nhớ một chuỗi (nói 'test_database') chứa trong các dòng mất tích, bạn có thể sử dụng tính năng cuốc để tìm kiếm các cam kết liên quan đến rằng chuỗi:

git log -Stest_database <file> 
+0

Trên thực tế, "git blame --reverse" sẽ không cho bạn biết ai đã xóa các dòng trực tiếp. Nó cho bạn biết bản sửa đổi cuối cùng trong đó các dòng tồn tại. Vì vậy, làm thế nào để bạn tìm thấy những sửa đổi có tội mà thực sự loại bỏ các dòng? Đây là cách tôi đã tìm ra cách thực hiện: lấy phiên bản LR từ đầu ra 'git blame --reverse', sau đó thực hiện:' git log --reverse --ancestry-path $ LR..HEAD ', và mục đầu tiên là một ứng cử viên, gọi nó là C. Sau đó sử dụng 'git show $ C' để kiểm tra, và nếu nó không phải là những gì bạn đang tìm kiếm, bắt đầu lại với git đổ lỗi, thay thế R với C. – jbyler

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