2014-10-20 14 views
32

Trong gerrit cũ của Android: link, để tải xuống bản vá, tôi thấy 4 tùy chọn.gerrit - git (pull vs checkout vs cherrypick) dành cho những gì?

  1. repo tải
  2. thanh toán
  3. kéo
  4. cherry-chọn

sự khác biệt giữa chúng là gì?

Đây là những gì tôi nghĩ về chúng. Xin làm rõ

  1. repo tải về -> Tải xuống mã nguồn đầy đủ (của tất cả các hợp đồng mua git trong dự án) cho đến nay cam kết
  2. thanh toán -> Không chắc nó là gì.
  3. kéo -> Bạn không chắc chắn nó làm gì?
  4. cherry-pick -> Nó chỉ cố tải xuống thay đổi này và hợp nhất nó vào mã nguồn.

Tôi biết rằng việc rút và thanh toán khác với lựa chọn anh đào. Nhưng chúng khác nhau như thế nào?

+2

chú muốn trở thành người trả lời: Câu hỏi này là về Gerrit, không Git. Nếu bạn đăng câu trả lời giải thích những thuật ngữ này có ý nghĩa gì trong Git, bạn không trả lời câu hỏi này. –

Trả lời

23

Bạn nói đúng về câu hỏi đầu tiên. Dưới đây là phần còn lại của họ:

  1. Thanh toán: fetches những thay đổi mới nhất. Bạn đã tải xuống repo này. Nó không hợp nhất các thay đổi mới nhưng làm cho thư mục làm việc của bạn phản ánh chúng. Bạn có thể hợp nhất chúng vào lúc rảnh rỗi sau này.

  2. Kéo: fetches những thay đổi VÀ sáp nhập họ vào chi nhánh địa phương của cùng một tên.

  3. Cherry-chọn: fetches cam kết và chơi nó trên đầu trang của các chi nhánh địa phương hiện tại, do đó tạo ra một hoàn toàn mới cam kết đó xảy ra để có những thay đổi tương tự như một trong những nó lấy .

Chúng khác một chút so với ý nghĩa thực sự của chúng trong git. checkoutcherry-pick không tự động tìm nạp các thay đổi. checkout chỉ cần HEAD cho cam kết bạn chỉ định, do đó làm cho thư mục hoạt động chính xác như tại cam kết đó. Tương tự, cherry-pick được sử dụng để phát lại các cam kết mà bạn đã có quyền truy cập cục bộ.

+1

1. Thanh toán không chỉ _fetch_ tập bản vá, nó cũng _check out_ cam kết chính xác của bộ bản vá. 2. Cam kết của tập bản vá được hợp nhất với đầu hiện tại. Tên chi nhánh không liên quan gì đến mọi thứ. –

4

Với git, bạn có phiên bản kho lưu trữ của riêng mình. Bạn đồng bộ hóa với kho của người khác. Với fetch bạn cập nhật các tham chiếu từ xa của bạn, ví dụ:làm mới những gì người khác có. Với checkout bạn chuyển sang một bản sửa đổi cụ thể. Bạn muốn làm điều này, nếu bạn chỉ mới bắt đầu sử dụng này.

Bây giờ nếu bạn đang theo dõi một chi nhánh từ xa, bạn có thể chỉ cần cập nhật chi nhánh địa phương của bạn. Đó là những gì pull làm cho bạn. Nó áp dụng tất cả các thay đổi trong nhánh từ xa đến nhánh cục bộ của bạn. Bạn cần điều này nếu bạn đang sử dụng nó, bạn chỉ muốn cập nhật.

cherry-pick cho phép bạn chọn một thay đổi từ bất kỳ đâu trong kho và sẽ áp dụng nó trên chi nhánh địa phương của bạn. Sẽ rất tiện lợi nếu bạn đang ở trên một nhánh khác vì bất kỳ lý do gì nhưng vẫn cần sự thay đổi cụ thể đó. Hãy lưu ý rằng nếu bạn chọn lựa anh đào mà không đẩy sự thay đổi đó, sự thay đổi này không liên tục. Đó là cam kết kho lưu trữ địa phương của bạn nhưng không phải để từ xa (nó có thể là những gì bạn cần trong trường hợp mặc dù).

Xem thêm về cơ bản git ví dụ here

1

thanh toán: bạn muốn sử dụng nó khi bạn đang tùy thuộc vào một thay đổi cụ thể trong một chi nhánh. nói rằng đồng nghiệp của bạn đã kiểm tra một số API để bạn tiêu thụ và bạn có thể kiểm tra CHANGE đó thành chi nhánh địa phương mới và bắt đầu thực hiện thay đổi của bạn.

Cherrypick: bạn muốn áp dụng một ĐỔI cụ thể cho chi nhánh địa phương của bạn hoặc chi nhánh phát hành cụ thể, sau đó là cherrypick. Hãy tưởng tượng bạn có bản sửa lỗi vá trong bản phát hành 1.1 của mình và bạn muốn áp dụng sửa chữa/THAY ĐỔI cho chi nhánh 2.0 của mình, bạn có thể chỉ cần cắm nó vào. Nó sẽ tạo ra một ĐỔI mới trong nhánh 2.0 của bạn có chứa bản sửa lỗi.

đây là một đại diện đồ họa: http://think-like-a-git.net/sections/rebase-from-the-ground-up/cherry-picking-explained.html