Git: Chi nhánh hay ngã ba?


17

Tôi có một dự án trò chơi sẽ có hai phiên bản:

  1. Một phiên bản đơn giản của trò chơi, cốt lõi.
  2. Một phiên bản nâng cao của trò chơi.

Tôi có phiên bản đầu tiên trong kho lưu trữ công cộng của mình và chỉ có tôi sẽ làm việc với nó. Đối với phiên bản thứ 2, hai người bạn của tôi và tôi sẽ làm việc với nó. Phần quan trọng là tôi muốn hai phiên bản ở trong kho lưu trữ của tôi.

Tôi nghĩ rằng tôi có thể sử dụng các nhánh cho việc này, nhưng xem xét câu hỏi này và câu trả lời của nó , đó không phải là cách thực hành tốt về mặt phiên bản. Theo như tôi đã tìm ra, việc từ bỏ kho lưu trữ của riêng bạn là không thể.

lựa chọn của tôi là gì đây? Làm thế nào tôi có thể giữ cả hai phiên bản trong kho lưu trữ của tôi?


3
Một ngã ba là một chi nhánh, chỉ được lưu trữ ở một nơi khác.

@MichaelT Ok. Là dĩa có nghĩa là được sáp nhập tại một số điểm, như các chi nhánh?
Varaquilex

22
Fork là một khái niệm github, không phải là một khái niệm git. Nó chỉ đơn giản là nhân bản và đặt nó trong tài khoản của bạn. Vì vậy, nhân bản là những gì bạn đang tìm kiếm. Xem stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr

@Varaquilex Cách bạn cần giữ cả hai phiên bản trong một kho lưu trữ? Ngoài forkra, một kho lưu trữ sẽ tạo ra một kho lưu trữ mới trong tài khoản của bạn.
Mahdi

1
Tại sao không chỉ có một phiên bản có thể chạy ở chế độ đơn giản hoặc chế độ nâng cao? Tất nhiên một số phần của mã sẽ chỉ hoạt động đơn giản và một số phần chỉ hoạt động ở nâng cao, nhưng tôi tưởng tượng rất nhiều sẽ được chia sẻ.
bdsl

Câu trả lời:


11

Đối với tôi có vẻ như bạn cần hai Kho lưu trữ chứ không phải hai Chi nhánh . Một nhánh là một cơ chế để xử lý các thay đổi trong một kho lưu trữ để cuối cùng hợp nhất chúng với phần còn lại của mã.

Nếu bạn thực sự muốn giữ cả hai phiên bản của một cơ sở mã tương tự trong cùng một kho lưu trữ, thì tùy chọn duy nhất của bạn là đi đến Chi nhánh , tuy nhiên như đã đề cập trước đó, mục đích chính của chi nhánh là tách một số cam kết cụ thể theo cách rằng họ không xung đột với phần còn lại của mã trong giai đoạn phát triển và hợp nhất chúng khi chúng sẵn sàng hoạt động.

Có những tình huống một kho lưu trữ có hai nhánh hơi khác nhau - ví dụ: phiên bản 32 bit và 64 bit của cùng một mã nguồn, tuy nhiên tôi vẫn khuyên bạn nên sử dụng các kho lưu trữ riêng biệt, nếu đó là một tùy chọn.


6

Câu trả lời cho câu hỏi "tôi nên nhân bản hay ngã ba" hoàn toàn giống với câu trả lời cho câu hỏi này "tôi có muốn phiên bản cá nhân của riêng tôi cho dự án này không?" có = ngã ba, không = sao chép kho lưu trữ.

Trong git, nhánh là một thứ trọng lượng nhẹ thường là tạm thời và có thể bị xóa. Một ngã ba (trên github) là một dự án mới dựa trên dự án trước đó. Bạn sao chép một kho lưu trữ để thực hiện công việc đó với tư cách là thành viên nhóm.

Nhiều dự án công cộng có bạn rẽ nhánh dự án để tránh những thay đổi làm việc ra khỏi dự án chính.

Đối với giai đoạn 2, rẽ nhánh dự án sau đó sao chép nó vào máy tính làm việc của bạn và để bạn bè của bạn làm tương tự.


Làm thế nào tôi có thể ngã ba dự án của riêng tôi?
Varaquilex

chọn kho lưu trữ trong github sau đó nhấp vào ngã ba (nút ở trên cùng bên phải cho tôi)
DwB

Tôi biết làm thế nào để làm điều đó, điều là khi bạn cố gắng sao chép dự án của riêng bạn, bạn chỉ đơn giản là được chuyển hướng đến kho lưu trữ, giống như bạn nhấn nút refresh. Không có kho lưu trữ bổ sung được liệt kê khi bạn duyệt các kho lưu trữ của bạn sau khi bạn cố gắng rẽ nhánh dự án của riêng bạn. Tôi nghĩ rằng tôi sẽ tạo một repo mới, sao chép nội dung của repo khác mà tôi muốn rẽ nhánh và tiếp tục làm việc với những người khác ở đó.
Varaquilex

0

Những gì nó thực sự nghe như bạn muốn là một mô hình con. Nếu bạn tạo repo đầu tiên (repo đơn giản riêng tư của bạn) và sau đó thêm nó dưới dạng mô hình con vào repo phiên bản nâng cao, thì bạn sẽ có thể theo dõi và kéo các thay đổi sang mô hình con trong repo nâng cao khi bạn phát triển repo đơn giản riêng tư.


1
Một số người đã dành thời gian để trả lời -1 của Ryan, nhưng không dành thời gian để đưa ra nhận xét tại sao và hành vi này đi ngược lại tinh thần của các hướng dẫn của SO. Nếu trong câu hỏi của OP, "lõi" giống hệt nhau ở cả hai cây, có cả trình bao bọc "đơn giản" và "nâng cao" xung quanh lõi, thì câu trả lời này ít nhất là hợp lý.
Scott Prive

Tôi đã nêu lên nhưng anh ta có lẽ nên bao gồm một lời giải thích như của bạn để giải thích tại sao một mô hình con sẽ tốt và cách nó hoạt động. Chia mã chung vào một thư viện có thể được bao gồm dưới dạng một mô hình con là một ý tưởng tốt, nhưng không xác định rằng điều đó nên được thực hiện theo gợi ý của một mô hình con không ngay lập tức có ý nghĩa.
Sean Burton
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.