2010-10-25 10 views
7

thể trùng lặp:
What is the difference between a tag and a branch in git?sự khác biệt giữa thẻ và chi nhánh với git là gì?

Những gì tôi muốn làm là tạo các điểm kiểm tra cho các phiên bản khác nhau của mã của tôi. Vì vậy, một khi tôi thực hiện một loạt các cam kết, tôi muốn nói, "Được rồi, vào thời điểm này trong mã, đây là phiên bản 0.1 hoàn thành". Và sau đó tôi có thể thực hiện một loạt các cam kết và làm điều đó một lần nữa và nói, "Được rồi, thời điểm này là 0,2 hoàn thành".

tôi biết làm thế nào để thực hiện một chi nhánh và một thẻ ... Tôi chỉ không hiểu sự khác biệt, và cái nào sẽ làm những gì tôi muốn;)

Cảm ơn

+4

Bản sao của [Sự khác biệt giữa thẻ và chi nhánh trong git là gì?] (Http://stackoverflow.com/questions/1457103/what-is-the-difference-between-a-tag-and-a -branch-in-git) Tại sao không thực hiện tìm kiếm trước khi yêu cầu? –

Trả lời

5

Thẻ đại diện phiên bản của chi nhánh cụ thể tại một thời điểm. Chi nhánh đại diện cho một luồng riêng biệt phát triển có thể chạy đồng thời với các phát triển khác các nỗ lực trên cùng một cơ sở mã.

NGUỒN: This duplicate question.

Điều bạn muốn có thể là TAG.

+0

Cảm ơn, hoạt động tốt. Thật khó hiểu vì khi tôi đi đến github, tôi thấy rất nhiều chi nhánh với số phiên bản ... nên tôi đã bối rối. – egervari

5

Cả hai nhánh và thẻ về bản chất đều là con trỏ để cam kết. Điểm khác biệt lớn nhất là cam kết một chi nhánh chỉ ra các thay đổi khi bạn thêm các commit mới, và một thẻ được đóng băng đến một cam kết cụ thể để đánh dấu một điểm trong thời gian như có một ý nghĩa nhất định. Từ một trong những nguồn lực Git tôi yêu thích, Pro Git:

Giống như hầu hết VCSs, Git có khả năng điểm cụ thể thẻ trong lịch sử như là quan trọng. Nói chung, mọi người sử dụng chức năng này để đánh dấu bản phát hành điểm (v1.0, v.v.). Trong phần này, bạn sẽ tìm hiểu cách liệt kê các thẻ có sẵn có sẵn, cách tạo các thẻ mới và các loại thẻ khác nhau là gì.

A branch in Git is simply a lightweight movable pointer to one of these commits. 
-2

Thẻ là khối xây dựng cơ bản trong git; chi nhánh không. Git thực hiện kiểm tra để đảm bảo các thẻ vẫn không đổi, không bao giờ thay đổi, khi được tạo chỉ vào cam kết. Một nhánh, mặt khác chỉ là một tham chiếu hoặc con trỏ tới một cam kết, và nó có thể được cập nhật để trỏ đến một cam kết khác một cách tự do.

+2

"Thẻ là một khối xây dựng cơ bản trong git; các nhánh không có." Không có ý nghĩa của "cơ bản" mà tuyên bố đó là chính xác. Đặc biệt, nó không thể làm công việc hữu ích trong git mà không có chi nhánh, nhưng có rất nhiều dự án git đơn giản trên mạng mà không có thẻ nào cả. –

0

Giả sử bạn có - Sản phẩm tuyệt vời v1.0 ổn định và cam kết trong kho lưu trữ git.

Bạn thực hiện sửa lỗi và những thay đổi trong chi nhánh đó là v1.0 và bạn tag họ với các công cụ như:

  • này sửa chữa hạng mục công trình 1341 - bug ...

  • phiên bản này sửa lỗi mục 234324 - lỗi ...

  • v1.0 thức

Trên đây là tất cả các thẻ đại diện cho nhà nước của mã (một LABEL) khi các cam kết đã được thực hiện. Vì vậy, khi bạn tạo v1.5 và một lỗi xuất hiện trong phiên bản 1.0, bạn lấy thẻ v1.0 final và kiểm tra lỗi trên đó.

NGAY BÂY GIỜ! Bạn quyết định thay đổi Truy cập dữ liệu cơ bản của sản phẩm Super Awesome. Bạn làm nghề gì? Bạn chi nhánh v1.0 và tạo một chi nhánh mới gọi là chi nhánh DAL của sản phẩm Super Awesome MỚI.

Thẻ dành cho ảnh chụp nhanh các cam kết hàng ngày đến hàng ngày. Chi nhánh là để thay đổi quy mô lớn hơn.

+1

Nhìn qua các dự án ngẫu nhiên trên github có vẻ như ngược lại - các nhà phát triển sử dụng các nhánh trên cơ sở hàng ngày và chỉ sử dụng các thẻ để chỉ ra các bản phát hành hoặc các điểm đặc biệt khác. Tôi không có một quy trình làm việc đặc biệt bất thường, nhưng tôi tạo ra các nhánh git mới mỗi ngày, nhưng những tháng đã trôi qua kể từ khi tôi tạo một thẻ mới. –