2013-09-26 157 views
5

Giả sử tôi có một repo với nhiều lệnh cấm.Nhận ảnh chụp của một repo git vào một ngày cụ thể

Có thể lấy lại ảnh chụp nhanh của một số ngày/giờ cụ thể bằng git foo thông thường không? (Chúng tôi hiện có mã bãi mỗi ngày, và tôi đang nghĩ cách để loại bỏ)

(Giả sử không có chi nhánh bị xóa vĩnh viễn, và git commit lịch sử chưa được chơi với)

Chỉnh sửa: Tạm thời sáp nhập chi nhánh là có thể.

Trả lời

6

Cảnh giác với số @{<date>}, dựa trên việc reflog (có nghĩa là, bị giới hạn theo mặc định là 90 ngày).
Xem "Specifying Revisions" trong git rev-parse.

"git checkout by date" gợi ý phương pháp khác:

git checkout `git rev-list -n 1 --before="2013-09-25 5:00" master` 

Note this warning though:

rev-list sẽ không hoạt động nếu bạn có bất kỳ chi nhánh sáp nhập.
Ví dụ: Tôi muốn quay lại chi nhánh V5 nhưng đã kết thúc tại chi nhánh V4.2.

Một cách mạnh mẽ hơn sẽ thêm --first-parent:

git checkout `git rev-list -n 1 --first-parent --before="2013-09-25 5:00" master` 
+0

hòa trộn Chi nhánh có thể xảy ra. Đã chỉnh sửa câu hỏi. –

+1

@ ansh0l Tôi * chỉ * chỉnh sửa câu trả lời của tôi để giải quyết vấn đề đó. – VonC