2011-02-10 42 views
53

The official Git doc nói:Git "Ảnh chụp nhanh" là gì?

$ git diff test

này sẽ cho bạn thấy những gì là khác nhau giữa các thư mục làm việc hiện tại của bạn và ảnh chụp trên 'test' chi nhánh

Là một newbie này là rất khó hiểu . Tôi chưa bao giờ nghe nói về thuật ngữ chụp nhanh. Chúng có nghĩa là "HEAD" của nhánh "test" không?

+7

Bạn cũng có thể đánh giá cao [The Git Parable] (http://tom.preston-werner.com/2009/05/19/the-git-parable.html), xây dựng ý tưởng về Git ở dạng câu chuyện , với một trong những ý tưởng cốt lõi là ảnh chụp nhanh. – Cascabel

+1

Cảm ơn tôi đã có cùng một câu hỏi. Nhìn vào Git Parable, và tại https://git-scm.com/book/en/v2/Getting-Started-Git-Basics, tôi hiểu một "ảnh chụp nhanh" như một bản sao toàn bộ của mọi tập tin đã thay đổi trong một thư mục , cộng với con trỏ tới tất cả các tệp không thay đổi trong cùng thư mục đó. Đúng không? – ouonomos

Trả lời

20

Ảnh chụp nhanh là trạng thái của một cái gì đó (ví dụ: một thư mục) tại một thời điểm cụ thể. Trong trường hợp này, ảnh chụp có nghĩa là nội dung hiện tại của nhánh thử nghiệm, điều này không phải là bản sửa đổi đầu.

+0

@jens: Ảnh chụp nhanh đang được sử dụng ở đây làm từ đồng nghĩa của một giáo dân cho một cam kết. Một đối tượng cam kết về bản chất là siêu dữ liệu (tác giả, ngày tháng, tin nhắn) và ảnh chụp nhanh nội dung của cây công việc của bạn (được biểu diễn như một đối tượng cây). Xem [Mô hình đối tượng Git] (http://book.git-scm.com/1_the_git_object_model.html) để biết thêm thông tin! – Cascabel

+0

Tôi không thể bình luận trực tiếp về trường hợp git, nhưng trong trường hợp của SVN bạn có thể có một vài thay đổi (không phổ biến, có nghĩa là chỉ trên đĩa cứng của bạn) trong một nhánh và phiên bản trunk trong một thư mục khác; bạn có thể phân biệt chúng với nhau. Tôi cho rằng khái niệm đó cũng tồn tại với git. – Femaref

+0

@jens: Phần khác là một nhánh chỉ đơn thuần là một con trỏ tới một commit, vì vậy khi bạn nói 'git diff test' bạn thực sự có nghĩa là" diff với commit được trỏ tới bởi nhánh 'test'". – Cascabel

2

Thứ nhất, đó không phải là tài liệu chính thức của git. Đó là một cuốn sách do cộng đồng sáng tác. Trong khi nó có lẽ là khá có thẩm quyền, nó không phải là phúc âm.

AFAIK, "ảnh chụp nhanh" không có bất kỳ ý nghĩa chính thức nào trong git. Chắc chắn git diff manpage không đề cập đến nó. Trong ngữ cảnh cho trước, nó có thể là một tham chiếu không chính thức về cách nhánh "thử nghiệm" đang được sử dụng trong các ví dụ trong cuốn sách, tức là, như một ảnh chụp nhanh về công việc đang diễn ra, cho mục đích thử nghiệm.

+0

trang người dùng git-stash đề cập đến 'Để nhanh chóng tạo ảnh chụp nhanh, bạn có thể bỏ qua cả hai "lưu" và ' – Mike

35

Ảnh chụp nhanh hạn được sử dụng trong trang web tham khảo git cũng như

Đây là thuật ngữ thay thế cho "Bản sửa đổi". Trong các hệ thống điều khiển phiên bản khác, các thay đổi đối với các tệp riêng lẻ được theo dõi và được gọi là bản sửa đổi, nhưng với git bạn đang theo dõi toàn bộ không gian làm việc, vì vậy chúng sử dụng ảnh chụp nhanh hạn để biểu thị sự khác biệt.

Từ http://gitref.org/index.html

Thay vì viết một công cụ mà các phiên bản từng file riêng lẻ, như Subversion, chúng ta có lẽ sẽ viết một mà làm cho nó dễ dàng hơn để lưu ảnh chụp nhanh của dự án của chúng tôi mà không cần phải sao chép toàn bộ thư mục mỗi lần .

Đây thực chất là Git. Bạn nói với Git bạn muốn lưu một ảnh chụp nhanh dự án của bạn với lệnh git commit và về cơ bản nó sẽ ghi lại một tệp kê khai về tất cả các tệp trong dự án của bạn trông như thế nào tại thời điểm đó. Sau đó, hầu hết các lệnh đều làm việc với các tệp kê khai đó để xem chúng khác nhau như thế nào hoặc kéo nội dung ra khỏi chúng, v.v.

Nếu bạn nghĩ về Git như một công cụ để lưu trữ và so sánh và ghép ảnh chụp nhanh của dự án, nó có thể dễ dàng hơn để hiểu những gì đang diễn ra và cách làm việc đúng đắn.

+0

Tôi cũng muốn chỉ ra rằng bạn có thể nhận được' ảnh chụp nhanh 'của một tệp riêng lẻ trong git bằng cách thực hiện 'git checkout ' như được liệt kê trong ví dụ về thanh toán git https://www.kernel.org/pub/software/scm/git/docs/git-checkout.html#_examples – g19fanatic

+1

@Jens: Trong khi bạn không thể chia nhỏ dấu kiểm, bạn có thể chỉ định lại nếu bạn nghĩ rằng câu trả lời khác là tốt nhất so với câu trả lời hiện được chấp nhận. Nhưng, có nhiều UPVOTES hơn, có nghĩa là cộng đồng cảm thấy câu trả lời rất tốt/có giá trị. Ngoài ra, điều đó không có nghĩa là phải được chấp nhận. Câu trả lời được chấp nhận là điều gì đó tối đa OP. – smRaj

1

Hiểu biết của tôi là ảnh chụp chung nói chung chỉ là "thực thể" mà git sử dụng để lưu trữ dữ liệu của nó. Trái ngược với việc lưu trữ dữ liệu của nó như là một loạt các "deltas"/changesets như SVN, ví dụ, mỗi cam kết mà bạn thực hiện với git tạo ra một "đối tượng cam kết" tham chiếu một ảnh chụp của mã trông như thế nào tại thời điểm đó .

Vì vậy, như @ Femaref nói, đó là trạng thái của mã tại một thời điểm cụ thể và không nhất thiết có nghĩa là nó là người đứng đầu chi nhánh kiểm tra nhưng có thể nằm trong ví dụ bạn đã thấy.

-1

Sau đây là một số trong những bối cảnh trong đó hạn chụp được sử dụng:

  1. Một mới cam kết được tạo ra bằng cách lấy một bản chụp của Index.
  2. Cam kết là ảnh chụp nhanh của repo tại một thời điểm nhất định.
+0

bạn đã sử dụng thuật ngữ để trả lời câu hỏi của mình, nhưng câu hỏi trực tiếp hỏi xem Ảnh chụp nhanh là gì. –

2

Ảnh chụp là một kho lưu trữ dưới dạng ảnh chụp màn hình là video.

kho Git bao gồm hàng loạt các bức ảnh chụp , đó là một loạt các tập tin và thư mục được đại diện bởi một đối tượng Git cây, lưu trữ trong thư mục của kho .git. Khi bạn commit, bạn lưu trữ thư mục hoạt động hiện tại làm hình ảnh mới (cam kết).

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