2011-01-31 43 views
51

Lệnh clone làm gì? Có bất kỳ tương đương với nó trong svn?Sự khác biệt giữa git remote add và git clone

sự khác biệt giữa

git remote add test git://github.com/user/test.git 

git clone git://github.com/user/test.git 

là gì Liệu tên của vấn đề repo tạo?

+1

có thể trùng lặp của [Sự khác biệt giữa bản sao và mkdir-> cd-> init-> remote-add-> pull?] (Http://stackoverflow.com/questions/4108778/what-is-the- sự khác biệt giữa clone-và-mkdir-cd-init-remote-add-pull) – Cascabel

+0

Bản sao tôi đã chọn là loại siêu của câu hỏi của bạn: nó hỏi "sự khác biệt giữa betweeen' git remote add; ... khác lệnh ... 'và' git clone'. – Cascabel

Trả lời

50

git remote add chỉ cần tạo một mục nhập trong cấu hình git của bạn chỉ định tên cho một URL cụ thể. Bạn phải có một repo git hiện có để sử dụng nó.

git clone tạo kho lưu trữ git mới bằng cách sao chép kho lưu trữ git hiện có tại URI bạn chỉ định.

+0

Bạn có nghĩa là, ví dụ, trong ví dụ của tôi, thư mục kiểm tra sẽ trống và tôi sẽ phải thực hiện '$ git fetch test' từ thư mục test? – nacho4d

+0

@ nacho4d: Bạn phải làm 'git init' trước, sau đó' git fetch' và 'git merge' (hoặc 'git pull') sau đó, và sau đó bạn sẽ vẫn còn một chút ... xem bản sao tôi đã liên kết. – Cascabel

6

Lệnh clone tạo bản sao cục bộ của repo bạn chỉ định. remote add thêm repo từ xa mà bạn có thể đẩy hoặc kéo.

Tương đương svn clonecheckout.

+0

... Tôi nghĩ rằng bạn có nghĩa là 'remote add' thêm một repo từ xa mà bạn có thể ** kéo hoặc đẩy từ ** –

39

Đây là những chức năng tương tự (thử nó!):

 
# git clone REMOTEURL foo 

và:

 
# mkdir foo 
# cd foo 
# git init 
# git remote add origin REMOTEURL 
# git pull origin master 

Bây giờ có những khác biệt nhỏ, nhưng về cơ bản có thể bạn sẽ không nhận thấy chúng. Như một bài tập để lại cho người đọc, so sánh .git/config's từ mỗi thư mục.

+2

Tôi đã thử nó. Với việc sử dụng 'clone', .git/config có phần [branch" master "]. Điều này có nghĩa là khi sử dụng 'clone' (Trong tương lai), tôi có thể hợp nhất nhánh đó và với' remote add' mà tôi không thể? – nacho4d

+2

Vâng, đầu tiên ... chúng vẫn giống nhau. Bạn thực sự có thể hợp nhất từ ​​thượng nguồn một trong hai cách. Với câu lệnh "branch" phụ có nghĩa là bạn không cần phải chỉ định nhánh ngược dòng. IE, trong một bản sao với "nhánh" ở trên trong đó bạn có thể làm một "git pull", nơi như trong khác bạn rất có thể cần phải làm một "git pull origin master". Bây giờ, bạn thực sự có thể sử dụng "git remote add" với cờ -t để thêm câu lệnh branch này. Hãy thử một "git remote add" có và không có "-t master" :-) –

+0

@ nacho4d: Bạn có thể nhận được cùng một phần [branch "master"] trong .git/config, với lệnh này: 'git branch --set - nguồn gốc master/master'. Đó là lệnh thứ 3 tôi sử dụng sau 'git remote add' và' git pull' mà bạn đã liệt kê, và 3 lệnh đó dường như cung cấp cho tôi một cấu hình giống hệt với những gì 'git clone' đã làm. – bjnord

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