Làm thế nào tôi có thể rẽ nhánh một kho lưu trữ công cộng, nhưng làm cho ngã ba của tôi ở chế độ riêng tư? Tôi có đăng ký để hỗ trợ các kho riêng.
Làm thế nào tôi có thể rẽ nhánh một kho lưu trữ công cộng, nhưng làm cho ngã ba của tôi ở chế độ riêng tư? Tôi có đăng ký để hỗ trợ các kho riêng.
Câu trả lời:
Câu trả lời là đúng nhưng không đề cập đến cách đồng bộ mã giữa repo công khai và ngã ba.
Dưới đây là quy trình làm việc đầy đủ (chúng tôi đã thực hiện việc này trước khi tìm nguồn mở React Native ):
Đầu tiên, sao chép repo như những người khác đã nói (chi tiết ở đây ):
Tạo một repo mới (hãy gọi nó private-repo
) thông qua giao diện người dùng Github . Sau đó:
git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git
Sao chép repo riêng để bạn có thể làm việc với nó:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Để thu hút sự nóng bỏng mới từ repo công cộng:
cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master
Tuyệt vời, repo riêng của bạn hiện có mã mới nhất từ repo công cộng cộng với các thay đổi của bạn.
Cuối cùng, để tạo một yêu cầu kéo repo riêng -> repo công khai:
Sử dụng Giao diện người dùng GitHub để tạo một ngã ba của repo công khai (nút "Fork" nhỏ ở phía trên bên phải của trang repo công khai). Sau đó:
git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname
Bây giờ bạn có thể tạo yêu cầu kéo qua Giao diện người dùng Github cho repo công khai, như được mô tả ở đây .
Khi chủ dự án xem xét yêu cầu kéo của bạn, họ có thể hợp nhất nó.
Tất nhiên toàn bộ quá trình có thể được lặp lại (chỉ cần bỏ qua các bước mà bạn thêm điều khiển từ xa).
git clone
sẽ thiết lập các nhánh theo dõi từ xa và có thể một số cấu hình khác trong repo nhân bản mà bạn không thực sự muốn. Trong khi đó, một bản sao --bare chỉ sao chép thư mục .git từ xa.
git status
cho thấy mọi thứ cập nhật, cây làm việc sạch sẽ cho dù tôi có thay đổi gì đi nữa. Do đó, tôi không thể cam kết và thúc đẩy bất cứ điều gì. Tôi đã xóa repo riêng mới tôi đã thực hiện thêm 2 lần nữa để thử điều này nhưng vẫn tiếp tục gặp vấn đề tương tự. Bất kỳ đề xuất?
Có thêm một lựa chọn nữa (tháng 1-2015)
Các câu trả lời hiện tại hơi lỗi thời vì vậy, cho rõ ràng:
Câu trả lời ngắn gọn là:
Điều này được ghi lại trên GitHub: trùng lặp-a-repository
Bạn phải nhân đôi repo
Bạn có thể xem tài liệu này (từ github)
Để tạo một bản sao của kho lưu trữ mà không cần chuyển, bạn cần chạy một lệnh nhân bản đặc biệt đối với kho lưu trữ ban đầu và đẩy gương sang kho mới.
Trong các trường hợp sau, kho lưu trữ mà bạn đang cố gắng chuyển sang - như exampleuser / new-repository hoặc exampleuser / mirrored - đã tồn tại trên GitHub. Xem "Tạo kho lưu trữ mới" để biết thêm thông tin.
Phản chiếu một kho lưu trữ
Để tạo một bản sao chính xác, bạn cần thực hiện cả hai bản sao trần và đẩy gương.
Mở dòng lệnh và gõ các lệnh sau:
$ git clone --bare https://github.com/exampleuser/old-repository.git # Make a bare clone of the repository $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git # Mirror-push to the new repository $ cd .. $ rm -rf old-repository.git # Remove our temporary local repository
Nếu bạn muốn nhân bản một kho lưu trữ ở một vị trí khác, bao gồm nhận các bản cập nhật từ bản gốc, bạn có thể sao chép một bản sao và định kỳ đẩy các thay đổi.
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git # Make a bare mirrored clone of the repository $ cd repository-to-mirror.git $ git remote set-url --push origin https://github.com/exampleuser/mirrored # Set the push location to your mirror
Như với một bản sao trần, một bản sao được nhân đôi bao gồm tất cả các nhánh và thẻ từ xa, nhưng tất cả các tham chiếu cục bộ sẽ được ghi đè mỗi khi bạn tìm nạp, vì vậy nó sẽ luôn giống như kho lưu trữ ban đầu. Đặt URL cho các lần đẩy đơn giản hóa việc đẩy vào gương của bạn. Để cập nhật máy nhân bản của bạn, hãy tìm nạp các bản cập nhật và đẩy, có thể được tự động hóa bằng cách chạy một công việc định kỳ.
$ git fetch -p origin $ git push --mirror
https://help.github.com/articles/d repeatating-a-reposeective
GitHub hiện có tùy chọn nhập cho phép bạn chọn bất cứ thứ gì bạn muốn kho lưu trữ nhập mới của mình ở chế độ công khai hoặc riêng tư