Làm thế nào để tôi sao lưu một repo git?


26

Tôi đang dự định chuyển từ SVN sang git. Với svn tôi chỉ cần sao chép thư mục repo của mình khi tôi muốn sao lưu nó. Tuy nhiên git không có ai vậy tôi phải làm gì?

Tôi có nên tạo một bản sao trên một ổ đĩa riêng và cập nhật bằng cách lấy từ dự án của mình không? Sau đó tôi có thể ghi / lưu trữ thư mục này và nó sẽ có tất cả lịch sử?

Điều này có thể rõ ràng nhưng tôi muốn chắc chắn khi nói đến sao lưu. Tôi vẫn giả vờ có một kho lưu trữ gốc.


Xem thêm: Sao lưu kho lưu trữ GitHub (câu trả lời cũng hoạt động cho các dự án git không phải GitHub)
Martin Thoma

Câu trả lời:


14

Bạn chỉ cần sao chép nó. git không sử dụng thư mục repo, nó chỉ bị ẩn khỏi chế độ xem thư mục bình thường. (Thư mục được đặt tên .gittrên các hệ thống * nix, vì vậy nó chỉ xuất hiện nếu bạn sử dụng ls -a. Tôi giả sử rằng nó đặt thuộc tính "ẩn" trong Windows, nhưng tôi chưa bao giờ sử dụng git trong môi trường Windows, vì vậy tôi không chắc về Làm thế nào nó được xử lý ở đó.)


Có một vài tập tin dự án trong thân cây của tôi, tôi bỏ qua. Vì vậy, theo nghĩa đen tôi có thể sao chép nó? (tôi sẽ cho rằng nó hoạt động giống như linux). Vì vậy, bản sao chỉ là một bản sao tập tin? tôi đoán nếu tôi kéo tất cả dữ liệu tôi muốn có trong thư mục. Tôi đã kiểm tra có các tệp .git nhưng có các tệp .svn trong thân svn của tôi và không nghĩ sẽ kiểm tra xem dữ liệu lịch sử có ở đó không

2
Trên Windows, vẫn còn .git, với thuộc tính "Ẩn".
grawity

1
@ acidzombie24: Thư mục .gitchứa toàn bộ trạng thái kho lưu trữ, bao gồm cả lịch sử. (Đó là phần "phân phối".)
grawity

5
@grawity: phần nhiều hơn là "tự kiểm soát", phần phân tán là khi bạn trao đổi khác nhau giữa các kho lưu trữ tự kiểm soát :)
akira

19

Câu trả lời akira là chính xác, nhưng bạn có thể thêm --mirror để tạo một repo trần (để sao lưu nhỏ hơn một chút).

Chúng tôi sử dụng chiến lược sau (gần như chính xác):

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

Sau đó, để khôi phục từ bản sao lưu của bạn:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo

2
Điều này rất hữu ích, cảm ơn. Làm cách nào để sử dụng repo sao lưu để khôi phục cây làm việc?
Ngày Jonathan

10

Tôi đang sử dụng gói git . Để tạo một tệp sao chép (một tệp sao lưu) thực thi:

git bundle create backup.bundle master

Để khôi phục kho lưu trữ với nhánh master, chỉ cần sao chép tệp backup.bundle:

git clone backup.bundle -b master my-project

2

tạo một bản sao mới ở một nơi khác:

 % git clone yourepo somewhereelse

btw, git một thư mục repo, bạn có thể định vị nó trong bản sao làm việc của bạn bên dưới thư mục con .git. mỗi bản sao làm việc có "thư mục repo".


10
Tôi không nghĩ rằng một bản sao được chấp nhận như một bản sao lưu, vì nó không phải là một bản sao chính xác. Ít nhất các nhánh từ xa của repo nhân bản sẽ bị mất trong bản sao và các nhánh của repo nhân bản sẽ xuất hiện dưới dạng các nhánh từ xa trong bản sao.
sleske
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.