2013-07-29 20 views
15

Đây không phải là một câu hỏi về cách để khôi phục lại các chi nhánh bị mất trong Github, mà đúng hơn là bao lâu bạn phải khôi phục lại một chi nhánh xóa thông qua việc sử dụng trường hợp câu chuyện sau đây:Bạn có thể khôi phục/khôi phục chi nhánh đã xóa trên GitHub trong bao lâu?

Trong vòng một yêu cầu kéo (thường được sử dụng như là một nơi để xem xét mã) chi nhánh có thể được sáp nhập và sau đó xóa, tất cả trong GUI github. Nếu bạn chọn xóa nó, bạn được cung cấp tùy chọn với từ in đậm và gạch dưới, để "khôi phục" nhánh.

Tôi nghi ngờ tùy chọn này có giới hạn thời gian và github không giữ điều này có thời hạn.

Github có giới hạn về thời gian bạn có thể thực hiện việc này không? Nếu có, giới hạn thời gian đó là bao nhiêu?

Trả lời

21

Tôi hỏi GitHub Support, đây là phản ứng (tôi nhấn mạnh) của họ:

Chúng tôi sử dụng một không gian tên ref riêng biệt cho tất cả các yêu cầu kéo mà chúng tôi sử dụng cho những thứ khác nhau bao gồm việc khôi phục các chi nhánh. Vì chúng tôi giữ những yêu cầu [Pull Request] không giới hạn, không có giới hạn thời gian khi khôi phục chi nhánh.

Bạn có thể thấy những tài liệu tham khảo đặc biệt trong điều khiển từ xa bằng cách sử dụng như sau:

$ git ls-remote | grep pull 
From [email protected]:<username>/<remote>.git 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  refs/pull/1/head 
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb  refs/pull/1/merge 
cccccccccccccccccccccccccccccccccccccccc  refs/pull/2/head 
dddddddddddddddddddddddddddddddddddddddd  refs/pull/2/merge 

Các tài liệu tham khảo được namespaced dưới refs/pull/<pull request number>/. Các điểm tham chiếu head ở đầu nhánh đang được yêu cầu kéo, tức là cam kết cuối cùng trên nhánh.Tuy nhiên, tôi không chắc chắn tham chiếu merge là gì.

2

Hỗ trợ GitHub sẽ có câu trả lời dứt khoát, nhưng tôi nghi ngờ nó dựa trên khoảng thời gian 90 ngày mặc định trước khi thanh lọc tự động the reflog.

gc.<pattern>.reflogexpire 

git reflog hết hạn loại bỏ reflog mục cũ hơn thời gian này; mặc định là 90 ngày.
Với "<pattern>" (ví dụ: "refs/stash") ở giữa, cài đặt chỉ áp dụng cho các tham chiếu khớp với số <pattern>.

Nhưng ... tôi bạn đã có một bản sao cục bộ với chi nhánh vẫn tuyên bố trong đó ... không có gì sẽ ngăn cản bạn để đẩy chi nhánh nói trở lại repo github;)

Cupcake 's answer (upvoted) cho rằng câu trả lời hỗ trợ: không có giới hạn, có nghĩa là hai settings are both set to never:

  • gc.reflogexpire
  • gc.reflogexpireunreachable

Điều đó có ý nghĩa đối với dịch vụ lưu trữ trên máy chủ không sửa đổi các repos đó tại địa phương và chỉ lưu trữ các sửa đổi được đẩy từ những người đóng góp bên ngoài.

2

Lưu ý rằng một số trang yêu cầu kéo trên GitHub sẽ không hiển thị các nút nhánh Xóa/Khôi phục mặc dù tài liệu tham khảo được lưu trữ an toàn as described by Cupcake.

Điều này có thể có nghĩa là cùng một chi nhánh đã được sử dụng lại trong yêu cầu kéo sau đó. Tìm kiếm repo (trong GitHub) cho tên chi nhánh và kiểm tra yêu cầu kéo mới nhất trên nhánh đó. Bạn sẽ tìm thấy giao diện người dùng để khôi phục (hoặc xóa) chi nhánh ở đó.