Những từ này có nghĩa gì trong Git: Kho lưu trữ, ngã ba, nhánh, bản sao, theo dõi?


130

Tôi thực sự không rõ ràng về ngữ nghĩa ở đây. Tất cả đều là về các bản sao / biến thể của một đơn vị mã + lịch sử, nhưng trước đây tôi không chắc mình có thể nói gì. Là cấu trúc logic này được giải thích ở đâu đó?


5
Tôi khuyên bạn nên đọc vài chương đầu tiên của cuốn sách Pro Git ( progit.org/book ).
ewall

61
+1. Rất nhiều hướng dẫn git chỉ cho bạn cách thực hiện một số tác vụ nhất định mà không giải thích ý nghĩa của một số từ nhất định hoặc cách hoạt động của git. Yêu cầu một tài nguyên giải quyết các chủ đề đó là một câu hỏi chính đáng.
Daniel Stutzbach

14
Ước gì tôi có thể +1 bình luận của Daniel nhiều hơn. Mặc dù ý nghĩa của một số thuật ngữ (ví dụ: kho lưu trữ) là rõ ràng, mối quan hệ của chúng không phải luôn luôn (nhánh so với ngã ba) và ý nghĩa thực sự dễ bị hiểu sai bởi một người nào đó được sử dụng cho một VCS tập trung. Bên cạnh đó, hãy xem Pro Git "chi nhánh là gì?" phần - một người dùng cơ bản thực sự muốn biết về các đốm và cây, hoặc họ chỉ muốn biết một cách định tính một nhánh là gì?
Cascabel

1
@DanielStutzbach có thể gửi bình luận về những điều không rõ ràng trong cuốn sách. (Tôi không biết thuật ngữ chính xác để nói điều đó.) Tôi đã làm điều đó, tôi đã nói rằng cuốn sách cần xác định kho lưu trữ là gì. Tôi đồng ý rằng khá khó để có được tài liệu khái niệm từ những người hiểu rất rõ điều gì đó. Cuốn sách đó (hiện tại) nói về cơ sở dữ liệu mà không xác định chúng là gì trong bối cảnh này và không nói gì về kho lưu trữ là gì.
user34660

Câu trả lời:


146

Kho lưu trữ đơn giản là nơi lưu trữ lịch sử công việc của bạn. Nó thường sống trong một.git thư mục con của bản sao làm việc của bạn - một bản sao của trạng thái gần đây nhất của các tệp bạn đang làm việc.

Để phân nhánh một dự án (lấy nguồn từ kho lưu trữ của ai đó tại một thời điểm nhất định và áp dụng các thay đổi chuyển hướng của riêng bạn cho dự án đó), bạn sẽ sao chép kho lưu trữ từ xa để tạo một bản sao của dự án, sau đó thực hiện công việc của riêng bạn trong kho lưu trữ cục bộ của bạn và cam kết thay đổi.

Trong kho lưu trữ, bạn có các nhánh, là nhánh hiệu quả trong kho lưu trữ của riêng bạn. Các chi nhánh của bạn sẽ có một cam kết tổ tiên trong kho lưu trữ của bạn và sẽ phân kỳ khỏi cam kết đó với các thay đổi của bạn. Bạn sau đó có thể hợp nhất các thay đổi chi nhánh của bạn. Chi nhánh cho phép bạn làm việc trên nhiều tính năng khác nhau cùng một lúc.

Bạn cũng có thể theo dõi các nhánh riêng lẻ trong kho từ xa. Điều này cho phép bạn lấy các thay đổi từ các chi nhánh của một cá nhân khác và hợp nhất chúng thành một chi nhánh của riêng bạn. Điều này có thể hữu ích nếu bạn và một người bạn đang làm việc trên một tính năng mới cùng nhau.

Có rất nhiều sách git tuyệt vời trực tuyến. Hãy xem ProGitGit Magic để bắt đầu, cũng như các hướng dẫn chính thức và sách cộng đồng.


Tất nhiên đọc hướng dẫn và hướng dẫn F là cơ bản. Nhưng đây dường như là một bản tóm tắt tuyệt vời của toàn bộ công cụ. Nhiều đánh giá cao!
brasofilo

Lưu ý rằng bạn có thể chuyển thư mục làm việc cục bộ của mình sang một nhánh mới ("git checkout <new_branch>"). Trong trường hợp này, các tệp trong thư mục làm việc cục bộ của bạn được REPLACED theo nội dung của nhánh bạn đang chuyển sang. Nhưng bạn không mất công việc của mình: Git lưu trữ tất cả các thay đổi đã cam kết ("git commit") bạn đã thực hiện trên nhánh trước trong "cơ sở dữ liệu" Git (thư mục .git ẩn) và sẽ cho phép bạn chuyển lại các tệp của mình.
KrisWebDev

3
Tôi nghĩ rằng nó đòi hỏi phải đề cập đặc biệt rằng trong lịch sử, bất kể bạn sử dụng loại VCS nào, việc rẽ nhánh và phân nhánh đều được coi là hai điều riêng biệt. Sự phân nhánh được coi là thỏa thuận thuận lợi và ngụ ý giữa các nhà phát triển. Forking nghiêm trọng hơn vì nó ngụ ý rằng các nhà phát triển làm việc trong một dự án đã không đồng ý về một số điều và quyết định chia tay. Các nhánh thành công sau đó thường được sáp nhập trở lại vào một dự án sau khi cả hai bên đi đến thỏa thuận. Kể từ đó, Git (và GitHub) đã làm mờ các thuật ngữ này và cả hai thuật ngữ về cơ bản thể hiện cùng một ý tưởng nhưng theo những cách khác nhau.
redteam316

Vì vậy, một kho lưu trữ không có các tập tin cho dự án trong đó? Bạn nói một nơi lưu trữ lịch sử công việc của bạn . Đo la tât cả hả? Chỉ là lịch sử của tập tin chứ không phải chính tập tin?
user34660

13

Tôi sẽ trả lời câu hỏi của riêng tôi với RTFM.

Nhưng, đọc hướng dẫn tốt này . Như tác giả đã đặt nó:

Một kết luận tôi rút ra từ điều này là bạn chỉ có thể thực sự sử dụng Git nếu bạn hiểu cách Git hoạt động. Chỉ ghi nhớ những lệnh nào bạn nên chạy vào thời gian nào sẽ hoạt động trong thời gian ngắn, nhưng đó chỉ là vấn đề thời gian trước khi bạn bị mắc kẹt hoặc tệ hơn là phá vỡ thứ gì đó.

Thật không may, một nửa trong số các tài nguyên hiện có trên Git, thật không may, chỉ sử dụng cách tiếp cận đó: chúng sẽ đưa bạn qua các lệnh sẽ chạy khi nào và mong rằng bạn sẽ làm tốt nếu bạn chỉ bắt chước các lệnh đó. Nửa còn lại trải qua tất cả các khái niệm, nhưng từ những gì tôi đã thấy, họ giải thích Git theo cách giả định rằng bạn đã hiểu cách Git hoạt động.


Phần giới thiệu này dường như đã được chuyển đến sbf5.com/~cduan/technical/git . URL gốc vẫn hoạt động cho đến bây giờ.
Eric Anderson

1
Điều này đúng trong bối cảnh. Nếu bạn cần phải làm việc hiệu quả ngay lập tức hoặc thực sự chỉ cần kiểm tra mã, không có hiểu biết sâu sắc về cách hoạt động của git. Các hướng dẫn là tốt. Đây là cách tôi nhận được vào git. Tuy nhiên, nếu hoặc khi bạn cần nâng cao hơn như tạo nhánh, rẽ nhánh, rebase và các tác vụ nâng cao khác, thì bạn phải biết git hoạt động như thế nào, đặc biệt nếu nền của bạn nằm trong điều khiển nguồn tập trung.
Phil

3

GoogleTechTalk này là một giới thiệu tuyệt vời về Git để tìm hiểu những gì thực sự xảy ra đằng sau hậu trường trong khi học ngôn ngữ. Nó được đưa ra bởi một người đóng góp rất sớm cho Git và anh ấy đã nói chuyện này vào năm 2007 như một cách giới thiệu về Git. Nếu bạn xem bài nói chuyện này, bạn sẽ không chỉ biết mỗi từ là gì, như kho lưu trữ, ngã ba, chi nhánh, v.v., mà bạn cũng sẽ biết những gì đang xảy ra đằng sau hậu trường khi mỗi từ này được tạo ra, hợp nhất, v.v.

Địa chỉ dài nhưng rất nhiều thông tin. Nó cũng tương phản Git với các Hệ thống kiểm soát phiên bản khác để bạn hiểu rõ hơn về lý do Git được tạo ra theo cách của nó và những lợi thế so sánh của nó so với các hệ thống điều khiển khác. Mặc dù cuộc nói chuyện đã cũ nhưng rất hữu ích để đứng dậy và chạy. Tôi sẽ xem cái này trước khi nhảy vào sách hướng dẫn. Tôi tin rằng mọi thứ sẽ có ý nghĩa hơn nhiều.

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.