2011-05-01 35 views
44

Tôi có một dự án với một repo git cục bộ đơn giản và tôi muốn di chuyển dự án này (thư mục, v.v.) sang máy tính khác và làm việc từ đó từ nay trở đi. Tôi không muốn có bất cứ thứ gì còn sót lại trên cỗ máy cũ (ngoại trừ các dự án git khác của tôi). Tôi muốn nó như thể tôi đã làm việc từ một cỗ máy mới.Di chuyển một repo git sang một máy tính thứ hai?

Tôi có thể chuyển tất cả các tệp sang máy tính đó hoặc có vấn đề với khóa không? Tôi có nên có cùng một khóa trên hai máy? Nếu chỉ đơn giản là di chuyển tất cả các thư mục không thể được thực hiện, tôi nên làm gì? Tôi muốn tránh những rắc rối của việc thiết lập và học cách sử dụng một máy chủ, vì điều này có vẻ phức tạp và tôi không muốn thay đổi công việc của mình.

Trả lời

52

Đối với trường hợp của bạn, cách tốt nhất để làm điều đó là sao chép qua thư mục (sao chép, scp, cp, robocopy - tùy theo điều kiện nào) sang máy tính mới và xóa thư mục cũ.

Tôi hoàn toàn không đồng ý với @Pablo Santa Cruz rằng nhân bản là mô hình cho những gì bạn đang làm. Không có nó không phải là. Bạn đang di chuyển một repo đến một máy tính mới.

Tại sao tôi không thích clone cho mục đích này:

  • Nó tạo ra các chi nhánh từ xa theo dõi cho từng ngành trong kho nhân bản. Bạn đang di chuyển, và repo cũ là không tồn tại.
  • Mọi chi nhánh từ xa và các tham chiếu khác đều bị bỏ qua hoàn toàn.
  • Bạn không nhận được móc của bạn nếu bạn có bất kỳ và bạn có thể quên rằng bạn đã có chúng!
  • Bạn không thể nhận "cam kết" bị mất, v.v. sử dụng git reflog hoặc các phương tiện khác. Có thể không phải là một vấn đề lớn, đặc biệt là nếu repo hoạt động như một máy chủ nhưng một điều cần lưu ý.

Nếu bạn tìm cách sao lưu repo git, git clone sẽ không nằm trong câu trả lời hàng đầu. Vì vậy, nó không nên được sử dụng để di chuyển một repo!Tôi cũng cảm thấy rằng chỉ một git clone không thể là một câu trả lời thích hợp vì git clone có quyền lựa chọn --mirror, mà bảo repo, có nghĩa là một repo git clone là khác nhau từ git clone --mirror repo (ngoài việc bị trần, sự khác biệt chủ yếu là những người tôi đề cập ở trên). Tôi sẽ làm một bản sao vì tôi biết những gì tôi nhận được với repo đã sao chép - cùng một số repo!

Khi xem xét git clone: ​​

  1. Nó là nhanh hơn như git hiện một số tối ưu hoá khi nhân bản
  2. Bạn có thể có phiên bản git khác nhau trên máy mới và một bản sao có thể làm cho repo không sử dụng được trong khác phiên bản (không phổ biến hiện nay). Nhưng thực tế điều này có thể là một chuyên nghiệp khác để sao chép, vì điều này sẽ thông báo cho bạn rằng máy tính mới có một phiên bản git khác.
+10

Mọi người khác đang làm theo cách này quá phức tạp. Mang toàn bộ thư mục dự án của bạn và sao chép nó vào máy mới. Làm xong. – kubi

+0

Âm thanh tốt. Tôi nhớ phải tạo ra một chìa khóa hoặc một cái gì đó. Tất cả điều đó có hoạt động đúng không nếu tôi chỉ sao chép nó và xóa repo cũ? –

+0

Tôi đã đọc rằng bạn có thể giữ các nhánh từ xa bằng cách sử dụng một cái gì đó như '\ *: \ *' nhưng tôi không chắc chắn về cú pháp chính xác và đó là một bitch của từ khóa google - @manojlds bạn có biết gì về điều đó hay không bạn có thể xây dựng được không? Tôi cảm thấy như thể, nếu các chi nhánh được bảo tồn, điều đó sẽ giải quyết hầu hết các vấn đề quan trọng (ngoại trừ móc) –

-1

Thay vì sao chép, tôi sẽ giới thiệu bạn đến clone kho lưu trữ. Nhân bản là mô hình chính xác cho những gì bạn đang cố gắng hoàn thành. Dự án nhân bản cũng sẽ chứa tất cả các siêu dữ liệu và thông tin git.

Trên máy đích:

$ git clone git://your-repo/proj proj 

Thay vì sử dụng git:// bạn cũng có thể sử dụng ssh:// hoặc http:// giao thức để truy cập kho. Tham khảo hướng dẫn sử dụng git để biết thêm thông tin.

+0

Cam kết và đẩy repo trên máy tính 1, sao chép trên máy tính 2. Cam kết đẩy trên máy tính 2. Kéo trên máy tính 1. RTM. – RyanScottLewis

+1

@coolryguy: Giả định rằng, có kho lưu trữ "trung tâm" thứ ba. – KingCrunch

+0

Tôi không rõ ràng - Tôi không sao chép, tôi đang di chuyển. Tôi không muốn nó chiếm không gian trên máy tính ban đầu. Tôi vẫn nên làm điều này, và sau đó xóa các thư mục cũ? –

-1

Vì mọi bản sao cũng là bản repo, chỉ cần sao chép bản sao đầu tiên trên máy tính thứ hai của bạn.

2

Có đủ để sao chép dữ liệu sang máy khác. Sử dụng git clone là gần như giống nhau, nhưng nó sẽ thiết lập máy tính bạn đang nhân bản từ như là nguồn gốc từ xa, mà có thể không phải là những gì bạn muốn.

+0

'git remote rm origin' – KingCrunch

+0

Phải, đó không phải là điều tôi muốn. Tôi muốn di chuyển dự án trên mà không có dấu vết trên máy ban đầu. Nhưng chỉ đơn giản là sẽ di chuyển nó mess lên phím của tôi? Tôi có cần thiết lập những cái mới trên máy mới không? –

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