Có chi nhánh riêng của repo công khai trên GitHub?


128

Tôi có một dự án PHP công khai trong repo GitHub, chỉ chứa một nhánh (chính).

Tôi muốn có một nhánh / nhánh riêng riêng dành cho tôi (Tôi đã trả tiền cho các repos GitHub riêng). Tôi muốn có thể hợp nhất các thay đổi từ nhánh / nhánh riêng sang kho công khai và ngược lại.

Với suy nghĩ đó, đây là những câu hỏi của tôi:

  1. Tôi có thể có một chi nhánh riêng trên repo công cộng không?
  2. Tôi có thể chuyển repo công khai của riêng mình vào nhánh / nhánh riêng của mình không?
  3. Nếu cả hai cách trên đều có thể, thì cách nào là tốt nhất? Nếu không, tôi nên tiếp tục như thế nào?

1
Không phải là ý tưởng tốt nhất để phân nhánh kho lưu trữ công cộng của bạn như một kho lưu trữ riêng tư, nơi bạn tạo một số nhánh mà bạn không đẩy (trở lại) vào kho lưu trữ công cộng (và ngược lại)?
Legolas

1
Thats những gì tôi yêu cầu, tôi muốn để có thể tạo ra một bản sao của repo nào nhưng cập nhật của tôi là tư nhân (trừ khi tôi muốn đẩy điều cụ thể về một cộng đồng)
Lizard


@assylias, bạn có thể đặt nó như một câu trả lời không? Đó là câu trả lời tốt nhất theo ý kiến ​​của tôi, và tôi đã không chú ý đến nhận xét của bạn trước khi tự tìm bài viết.
mbh86

@ mbh86 Nó không thực sự là một câu trả lời, là một liên kết và tôi không có thời gian để biến nó thành một câu trả lời. Nhưng nếu bạn muốn sử dụng nội dung của trang đó để tạo ra một câu trả lời ở đây (với một tham chiếu đến các trang web ban đầu), nó chắc chắn có thể giúp những người dùng khác và bạn sẽ nhận được phiếu bầu tán thành của tôi :-)
assylias

Câu trả lời:


69
  1. Nhân bản repo của bạn .
  2. Đặt repo đã sao chép thành một repo riêng tư trên GitHub.
  3. Sao chép repo riêng tư vào máy của bạn
  4. Thêm điều khiển từ xa vào kho công cộng của bạn (git điều khiển từ xa thêm công khai git@github.com: ...)
  5. Đẩy các nhánh với các cam kết dành cho repo công khai của bạn đến điều khiển từ xa công cộng mới đó. (đảm bảo rằng bạn không vô tình xác nhận mã chỉ riêng tư)
  6. Bạn có thể thực hiện các thay đổi đối với repo công khai của mình bằng cách sử dụng 'git fetch public', sau đó hợp nhất chúng cục bộ và đẩy sang repo riêng tư của bạn (origin remote).

Nhân bản hoạt động tốt đối với tôi, mặc dù tôi phải làm theo thứ tự ngược lại, đầu tiên tạo một repo riêng tư và sau đó sao chép repo công khai ở đó từ dòng lệnh. Cảm ơn!
Joel

104

Có thể có chi nhánh riêng trên repo công cộng không?

Trên GitHub, kho lưu trữ của bạn là công khai hoặc riêng tư; bạn không thể "tư nhân hóa" một cách có chọn lọc chỉ một chi nhánh.

Tôi có thể chuyển repo công khai của riêng mình vào nhánh / nhánh riêng của mình không?

Bạn có thể sao chép repo công cộng của bạn để máy tính cục bộ của bạn, chi nhánh khi cần thiết, và đơn giản là không đẩy bạn chi nhánh "private" thượng nguồn (bằng cách xác định chi nhánh để đẩy nguồn gốc: git push origin masterhoặc git push origin branch-i-want-to-be-public:master).

Cách tốt nhất về phía trước / tôi nên tiến hành như thế nào?

Để tận dụng GitHub cho cả sự phát triển công khai và riêng tư của bạn, tôi khuyên bạn nên tạo nhánh công khai của bạn trong GitHub, thay đổi cài đặt của fork mới thành "Riêng tư", sau đó sao chép phiên bản riêng tư xuống máy cục bộ của bạn. Khi bạn đã sẵn sàng thực hiện các thay đổi ở chế độ công khai, hãy đẩy mọi thứ lên bản fork riêng của bạn trên GitHub và sau đó sử dụng các yêu cầu kéo để sao chép có chọn lọc các nhánh vào repo công khai.

Để đặt kho lưu trữ ở chế độ riêng tư trên GitHub, bạn phải có tài khoản được nâng cấp (trả phí) . Nếu bạn chỉ sử dụng tài khoản miễn phí, bạn vẫn có thể sử dụng quy trình đầu tiên mà tôi đề xuất - sao chép công khai sang máy cục bộ, chi nhánh và đẩy các chi nhánh "công khai" cụ thể về nguồn gốc - mà không cần repo riêng tư.

Nếu bạn có tài khoản GitHub trả phí hoặc đang sử dụng một dịch vụ khác cung cấp các nhánh và yêu cầu kéo công khai và riêng tư (chẳng hạn như BitBucket ), thì bạn có thể sử dụng một trong các cách trên để đặt mã của mình ở chế độ công khai.


32
GitHub không cho phép bạn đặt một bản fork của repo công khai ở chế độ riêng tư. Bạn phải sao chép repo để đặt nó ở chế độ riêng tư, và sau đó bạn sẽ mất kết nối với repo công khai. Tôi tự hỏi liệu bạn có thể thêm repo công khai làm điều khiển từ xa riêng biệt vào bản sao cục bộ của repo riêng tư của bạn hay không. Sau đó đẩy các nhánh đến điều khiển từ xa đó.
mj1531

3
Thật không may, ngụ ý của điều này là không thể sử dụng các yêu cầu kéo để kéo các thay đổi từ "fork" riêng tư sang bản sao công khai của kho lưu trữ.
Michael Mior

6
GitHub hiện cung cấp kho lưu trữ riêng tư không giới hạn cho các tài khoản miễn phí.
Nathan F.

1
Đây thực sự không phải là câu trả lời hàng đầu vì quy trình làm việc được đề xuất (PR từ một nhánh riêng) không hoạt động. Câu trả lời của @ mj1531 là quy trình làm việc tốt hơn.
món hầmSquared:

2

Có một giải pháp khác mà tôi thấy tốt hơn vì nó không dẫn đến trùng lặp repos trên cùng một máy.

  • Tạo một chi nhánh với những thứ bạn muốn ở chế độ riêng tư.
  • Tạo một repo mới trên GitHub, đặt nó ở chế độ riêng tư.
  • Thêm repo GitHub mới làm điều khiển từ xa thứ hai vào repo trên máy của bạn.
  • Đẩy nhánh riêng đến điều khiển từ xa thứ hai.

Kết quả cuối cùng là 1 kho với 2 điều khiển từ xa. 1 công khai, 1 riêng tư.
Chỉ cần cẩn thận về việc bạn đẩy để đặt tên cho phù hợp.


1

1.) Có thể có chi nhánh riêng trên repo công cộng không

Từ những gì tôi biết, không.

2.) Tôi có thể chuyển repo công khai của riêng mình vào chi nhánh riêng của mình không

Không, bạn không thể chia một repo đầy đủ (1-n nhánh) vào một nhánh duy nhất. Thực ra thì bạn cũng có thể làm được, nếu bạn chỉ fork một nhánh của repo đầy đủ. Chỉ cần thêm nó làm điều khiển từ xa hoặc bắt đầu từ một bản sao.

Bạn cũng có thể quan tâm Kiểm tra thưa thớt .

3.) Nếu cả hai điều trên đều có thể, đó là cách tốt nhất để tiếp tục

n / a

4.) Nếu cả hai đều không thể, tôi nên tiếp tục như thế nào?

n / a

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.