Có thể sao chép (không sao chép) kho lưu trữ git bằng các lệnh Unix cơ bản không?


22

Tôi khá mới với việc sử dụng git và tự hỏi liệu có ổn không khi sao chép kho Git bằng các lệnh UNIX phổ biến (như cphoặc tar/ untag), thay vì thông qua git clone.

Tôi đang ở trong tình huống có môi trường sản xuất (python ảo) mà một số mã đã kiểm tra trong git trong đó. Tôi tự hỏi liệu đó có phải là một ý tưởng tồi từ góc độ git để sao chép toàn bộ môi trường bằng cách sử dụng một tarhoặc một cái gì đó. Cách tiếp cận này sẽ thuận tiện cho việc tạo một bản sao nhanh chóng của một cơ sở / môi trường.

Mối quan tâm của tôi là có thể git clone liên kết một số id duy nhất với bản sao làm việc có thể gây ra xung đột nếu hai bản sao hoạt động tồn tại trong đó một bản sao được sao chép từ hệ thống khác.


Ồ, tôi đã ở trong tình huống này vì tôi có một số tệp dưới sự kiểm soát nguồn và một số thì không, và tôi có quyền truy cập tệp tôi cần để bảo tồn. Tôi rất vui vì bạn đã hỏi câu hỏi này.
Joe C

Câu trả lời:


21

Nó là hoàn toàn tốt.

git lưu trữ tất cả lịch sử, cam kết, v.v. trên trang web - đây là tài sản cơ bản của DCVS.

Về mặt kỹ thuật, gitcó thể hoạt động tốt với các kho lưu trữ được sao chép chạy khắp nơi, bởi vì toàn bộ vấn đề của DCVS là nó không phải biết những gì đang diễn ra bên ngoài bất kỳ kho lưu trữ cụ thể nào , và thực tế là không trừ khi bạn nói với nó .

Các nguyên tắc tương tự áp dụng ở đây.


1
Hiểu biết của tôi là một kho lưu trữ nhân bản sẽ chứa một liên kết trở lại cha mẹ. Sử dụng lệnh sao chép hệ điều hành sẽ không tạo liên kết đó.
Tony

@Tony Đúng, nhưng bạn có thể xóa liên kết đó bằng cách sử dụng git remote remove origin, điều này ngăn Git sử dụng kho lưu trữ gốc làm luồng ngược.
new123456

2

Bạn sẽ có thể sao chép toàn bộ thư mục làm việc sang bất kỳ nơi nào khác trên hệ thống của bạn và để nó tiếp tục hoạt động như bình thường khi sử dụng Git, Hg hoặc SVN. Tôi không thể nhận xét về các SCM khác.


0

Đây là một trường hợp sử dụng khác thường hơn, nhưng ...

Tôi đã thấy repotiện ích tạo các liên kết tượng trưng trong .gitthư mục. Trong trường hợp đó, khi bạn đang thực hiện một bản sao, bạn muốn chắc chắn rằng bạn sẽ liên kết tượng trưng cho các biểu tượng. Ví dụ:

cp -r -L <source-repo-dir> <destination-repo-dir>

0

Không sao nhưng nếu bạn chuẩn bị chia sẻ repo của mình với người khác, vui lòng xem xét những điều sau :

  • configTập tin của bạn có thể từ xa người khác có thể không quan tâm.
  • logsThư mục của bạn sẽ có các tài liệu tham khảo mà bạn có thể không muốn chia sẻ. Git rất tuyệt khi cho phép bạn làm những thứ khó chịu trên máy tính cho đến khi bạn cảm thấy thoải mái với kết quả cuối cùng, sau đó đẩy nó ra điều khiển từ xa để (thỉnh thoảng) chia sẻ nó. Một số lịch sử khó chịu đó có thể nằm trong reflog của bạn, vì vậy tốt hơn là không chia sẻ IMHO.
  • Tệp của bạn info/excludecó thể bỏ qua một số tệp chỉ bạn muốn bỏ qua.
  • Bạn cũng có thể có móc, cành cây và một loạt các thứ khác mang tính cá nhân và bạn không muốn chia sẻ ...
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.