2012-09-04 43 views
34

Tôi có một máy Amazon EC2. Tôi muốn sao chép một phiên bản cũ hơn của repo github trên máy này. Thông thường tôi sử dụng git clone https://linktomyrepo.git Làm cách nào để sao chép phiên bản cũ hơn, hãy nói cập nhật từ 14 ngày trước? Tôi có thể xem phiên bản chính xác mà tôi cần trong lịch sử cam kết của kho lưu trữ, nhưng không biết cách sao chép nó vào máy EC2. Tôi có cần phải sử dụng mã SHA nhỏ bên cạnh mỗi cam kết không?Nhân bản một phiên bản cũ hơn của github repo

Trả lời

43

Bạn luôn có thể thanh toán bất kỳ trạng thái nào bạn thích bằng cách sử dụng băm cam kết.

Ví dụ: bằng cách tìm nhật ký, bạn đã xác định rằng 233ab4ef là trạng thái bạn quan tâm, hãy phát hành git checkout 233ab4ef để kiểm tra trạng thái đó.

Một cách khác để đạt được điều này là sử dụng git checkout @{14.days.ago}

+0

'14' trong' git checkout @ {14.days.ago} 'chính xác là gì? – Shafizadeh

+0

Có vẻ như số ngày trước mà bạn đang tìm cách sao chép. Xin lỗi nếu đó không phải là những gì bạn đang yêu cầu. Điều này nói rằng "Clone repo dựa trên những gì nó trông giống như 14 ngày trước từ hôm nay" nếu tôi đọc quyền này. – jrb

25

Git không được thiết kế theo cách đó. Khi bạn sao chép một kho lưu trữ, bạn đang sao chép tất cả các phiên bản.

Vì vậy, lần đầu tiên sao chép một kho lưu trữ (mà ban đầu kiểm tra phiên bản mới nhất), sau đó kiểm tra phiên bản bạn thực sự muốn.

Bạn có thể kiểm tra cam kết dựa trên băm.

git checkout afe52 

Bạn cũng có thể kiểm dựa trên ngày (thay vì nhìn lên bảng băm), ví dụ:

git checkout '[email protected]{1979-02-26 18:30:00}' 
git checkout @{14.days.ago} 

Để kiểm tra các cam kết, bạn có thể kiểm, sử dụng git log.

+1

Điều gì xảy ra nếu có hàng nghìn cam kết? Cách nhanh nhất để xem tất cả các bản phát hành được gắn thẻ là gì? Nói cho những thứ như phiên bản 1, 2, 3, v.v. – anon58192932

+1

@ anon58192932 để xem tất cả các thẻ bạn có thể sử dụng thẻ 'git' và để xem chi tiết của thẻ cụ thể đó, bạn có thể sử dụng thẻ git cat-tag TAG_NAME' cho ví dụ tôi có thể sử dụng 'git cat-file tag v4.4.7' trong repo nút để cho tôi chỉ cho tôi chuỗi commit '0974fc6a25c343744235331eb20d31f6412ff7e1'. :) – Dobz

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