Sự khác biệt giữa git clone và thanh toán là gì?


Câu trả lời:


337

Trang hướng dẫn thanh toán: http://git-scm.com/docs/git-checkout

Trang người đàn ông cho bản sao: http://git-scm.com/docs/git-clone

Tóm lại, clone là để tìm nạp các kho lưu trữ mà bạn không có, thanh toán là để chuyển đổi giữa các chi nhánh trong kho lưu trữ mà bạn đã có.

Lưu ý: đối với những người có nền SVN / CVS và mới sử dụng Git, tương đương với git cloneSVN / CVS là checkout. Các từ ngữ giống nhau của các thuật ngữ khác nhau thường gây nhầm lẫn.


41
checkoutcũng có thể được sử dụng cho những thứ khác, như ghi đè một tệp của bạn trong bản sao làm việc của bạn với một phiên bản của tệp đó từ một phiên bản khác.
Svick

8
và khi nào bạn sử dụng "pull" vs "checkout"?
Kokodoko

27
pull là một fetch plus merge, checkout là một hoạt động cục bộ chỉ hoạt động trên dữ liệu đã được tìm nạp. Vì vậy, nó không giống như thanh toán svn cả.
Tháng 8 Lilleaas

13
Đến từ thế giới SVN, tôi cũng bối rối. Wow .. thật là một mớ hỗn độn. Trong một thế giới lý tưởng, tôi sẽ buộc mọi nhà sản xuất hệ thống kiểm soát nguồn sử dụng các thuật ngữ giống nhau.
Zoltán Tamási

5
Fork là một thuật ngữ github và không liên quan đến chính git.
Tháng 8 Lilleaas

123

git clone là tìm nạp kho của bạn từ máy chủ git từ xa.

kiểm tra git là để kiểm tra trạng thái mong muốn của bạn về kho lưu trữ của bạn (như các chi nhánh hoặc các tệp cụ thể).

Ví dụ, bạn hiện đang ở chi nhánh chính và bạn muốn chuyển sang phát triển chi nhánh.

git checkout develop_branch

Ví dụ: bạn muốn kiểm tra trạng thái cụ thể của một tệp cụ thể

git checkout commit_point_A -- <filename>

Dưới đây là một tài liệu tham khảo tốt để bạn học Git, cho phép bạn hiểu dễ dàng hơn nhiều.


20
"từ máy chủ git từ xa" - máy chủ không cần thiết phải điều khiển từ xa. git clonecũng sẽ làm việc với repos địa phương.
TẬP

1
Cảm ơn các liên kết đến một tài liệu tham khảo trực quan đến git!
Con trỏ David

@Kit Ho: Liên kết tốt như một tài liệu tham khảo, nhưng nó không giúp ích nhiều cho người có câu hỏi cơ bản về git như người ở trên. Như chính bài báo đã nói, "Một khi bạn biết một chút về cách hoạt động của git, trang web này có thể củng cố sự hiểu biết của bạn"
SN

Định nghĩa thông tư không hữu ích lắm. Từ "tìm nạp" được sử dụng để mô tả bản sao là hữu ích và thêm ý nghĩa, nhưng cụm từ "thanh toán là để kiểm tra ..." không thêm ý nghĩa, cũng không thực sự giúp phân biệt sự khác biệt giữa hai hoạt động.
C Perkins

11

Một điều cần chú ý là không có bất kỳ "Sao chép" nào trong git. Đó là bởi vì bạn đã có một bản sao đầy đủ trong repo địa phương của bạn - repo địa phương của bạn là một clonerepo ngược dòng bạn đã chọn. Vì vậy, bạn có hiệu quả một cá nhân checkoutcủa tất cả mọi thứ , không đưa vào một số 'khóa' trên các tập tin trong repo tham khảo.

Git cung cấp các giá trị băm SHA1 làm cơ chế xác minh rằng bản sao bạn có của một tệp / cây thư mục / commit / repo giống hệt như được sử dụng bởi bất cứ ai có thể khai báo mọi thứ là "Master" trong hệ thống phân cấp tin cậy. Điều này tránh tất cả các 'khóa' khiến hầu hết các hệ thống SCM bị sặc (với các vấn đề thông thường là các bản sao riêng tư, sáp nhập lớn và không có sự kiểm soát hoặc quản lý thực sự của mã nguồn ;-)!


4
Câu hỏi không đề cập đến khóa và mặc định nên được giả định trong những ngày này rằng một người không quen thuộc với khái niệm này vì vậy những khác biệt này từ các VCS cũ chỉ nên được giải thích nếu được hỏi rõ ràng.
wRAR

6

Đơn giản chỉ cần kiểm tra git có 2 công dụng

  1. Chuyển đổi giữa các chi nhánh địa phương hiện có như git checkout <existing_local_branch_name>
  2. Tạo một nhánh mới từ nhánh hiện tại bằng cờ -b. Giả sử nếu bạn ở nhánh chính thì git checkout -b <new_feature_branch_name>sẽ tạo một nhánh mới với nội dung của master và chuyển sang nhánh mới được tạo

Bạn có thể tìm thấy nhiều lựa chọn hơn tại trang web chính thức


Đẹp. Đây -btùy chọn là tuyệt vời mà tạo ra một chi nhánh địa phương mới và kiểm tra nó ra cũng cùng lúc trong lệnh duy nhất. Đã yêu nó!
RBT

2

checkout có thể được sử dụng cho nhiều trường hợp:

Trường hợp thứ nhất : chuyển đổi giữa các nhánh trong kho lưu trữ cục bộ Ví dụ: git checkout exists_branch_to_switch

Bạn cũng có thể tạo chi nhánh mới và chuyển qua trong trường hợp này với -b

git checkout -b new_branch_to_switch

Trường hợp thứ 2 : khôi phục tập tin từ x rev

git checkout rev file_to_restore ...

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.