Làm thế nào để bạn fork kho lưu trữ của riêng bạn trên GitHub?


164

Tôi có một kho lưu trữ công khai trên GitHub. Tôi muốn sao chép / sao chép nó và làm việc trên một dự án mới dựa trên kho lưu trữ này, nhưng tôi không muốn ảnh hưởng đến hiện tại. Tôi đã thử sử dụng giao diện người dùng GitHub nhưng nó không làm gì cả.


4
Chính xác là bạn đang cố đạt được điều gì? Có lẽ bạn có thể giải quyết nó bằng cách chỉ phân nhánh?
Artefact2

4
Tôi muốn lấy một bản sao của dự án và mở rộng dự án đó để làm việc khác nhưng không ảnh hưởng đến dự án ban đầu. Điều đó là vậy đó. Bất kỳ cách nào, nó đã được giải quyết.
WowBow

1
@ Artefact2 .. Xin lỗi, tôi nghĩ giải pháp của mcepl đã giải quyết nhu cầu của tôi nhưng, nó đã không làm được. Sau khi tôi sao chép dự án bằng 'git clone', tôi không muốn trỏ đến repo ban đầu mà là một repo mới trên github mà tôi đã tạo. Làm thế nào tôi có thể đạt được điều đó?
WowBow

1
@ Artefact2 Bạn có nhận được câu hỏi của tôi không?
WowBow

1
Lợi ích của fork so với việc tạo một repo mới là các biểu đồ và lịch sử mạng được liên kết với nhau. Thật đáng tiếc khi Github không cho phép điều này.
kenchew

Câu trả lời:


205

Tôi không nghĩ rằng bạn có thể rẽ nhánh repo của riêng bạn.
Nhân bản nó và đẩy nó sang một repo mới là tốt nhưng bạn cần phải:

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(xem git push)

Xem tất cả quy trình được mô tả tại " Ngã ba dự án của riêng bạn trên GitHub ".


Sáu năm sau (2016), giờ đây bạn có nhà nhập khẩu GitHub cho phép bạn nhập một repo từ một nguồn khác ... bao gồm cả GitHub.
Xem " Nhập kho lưu trữ với Trình nhập GitHub "

https://help.github.com/assets/images/help/importer/import-reposeective.png

narfcâu trả lời của ) cũng minh họa quá trình đó.

Điều đó sẽ cho phép bạn tạo một kho lưu trữ mới và nhập toàn bộ lịch sử của kho cũ vào kho mới, sử dụng url GitHub của nó.

Một lần nữa: những gì bạn nhận được là một bản sao, không phải là một ngã ba thực sự: bạn không thể thực hiện yêu cầu kéo từ repo mới sang bản cũ.

Một lần nữa (bis), như đã nêu trong các ý kiến bởi mpersico, đây không phải là một SỰ THẬT THẬT.

Nếu tôi có một foo là repo nguồn chính cho một dự án nguồn mở mà tôi muốn người khác rẽ nhánh và có quyền truy cập để làm PR, thì tôi không muốn làm việc trong repo đó, tôi muốn một ngã ba tôi có thể sử dụng để phát hành PR phù hợp với dự án của tôi.
Tôi đã giải quyết điều này bằng cách tạo tài khoản thứ hai trong GitHub và giả mạo điều đó.


Cảm ơn @VonC. Tôi nghĩ bạn đã quên đề cập đến việc chỉnh sửa tập tin cấu hình.
WowBow

1
Tôi đã nói về .git / config. Trừ khi bạn thay đổi url gốc, khi bạn nói "git remote add ....", nó sẽ từ chối bạn bởi vì, tên gốc đã tồn tại. Nhưng một khi tôi thay đổi url trong tập tin cấu hình thì nó hoạt động tốt. Bài báo bạn chỉ cho tôi thấy rằng.
WowBow

7
@WowBow nếu remoteđã tồn tại, thì hãy làm a git remote set-url origin https://github.com/userName/New_Repo. Điều đó sẽ thay đổi các .git/configtập tin cho bạn. Xem git-scm.com/docs/git-remote
VonC

1
@aus dự kiến, để bạn tìm nạp từ thượng nguồn. Xem stackoverflow.com/a/33360766/6309
VonC

1
Tôi vẫn cảm thấy rằng việc từ bỏ repo trong cùng một tổ chức nên được cho phép. Điều gì sẽ xảy ra nếu có một kho lưu trữ trung tâm chung cho mọi người và bạn muốn nhận được cập nhật từ đó mọi lúc và đồng thời thực hiện các thay đổi cụ thể cho bản sao của bạn dựa trên nhu cầu của bạn?
Prachi

107

Một cách siêu dễ dàng để làm điều đó trong 30 giây từ trang web GitHub:

  1. Sao chép URL của bạn. Ví dụ:https://github.com/YourName/YourOldRepo (gợi ý: đó là URL khi bạn xem trang chính của repo trên github.
  2. Nhấp vào +biểu tượng ở góc trên bên phải.
    https://i.stack.imgur.com/9zJgo.png
  3. Chọn "Nhập kho".
  4. Nơi nó yêu cầu "URL cũ", dán URL bạn đã sao chép ở bước # 1
    https://i.stack.imgur.com/vgWd3.png
  5. Nhập tên của repo mới của bạn và nhấp Begin Import .
  6. Đó là nó! Bây giờ bạn có một bản sao của repo đầy đủ, với tất cả các lịch sử và chi nhánh cam kết!

Hạn chế: Nó không thực sự là một ngã ba thực sự. Đó là một bản sao của repo. Nó sẽ không cho phép thực hiện các yêu cầu kéo qua lại.


4
Tôi đã quên Trình nhập GitHub (phát hành năm 2016) trong câu trả lời cũ năm 2010 của tôi: Tôi đã thêm một tham chiếu đến công cụ đó và câu trả lời của bạn.
VonC



4

Chỉ cần sao chép nó, tạo repo trống mới và đẩy nó.


1
Cảm ơn. Tôi đã suy nghĩ quá nhiều.
WowBow

Tôi đã sao chép nó vào máy cục bộ của mình và tạo một repo trống, nhưng khi tôi cố git origin github.com/userName/New_Repo.git .. nó nói nguồn gốc từ xa đã tồn tại. Tôi nên giải quyết nó như thế nào?
WowBow

Và bây giờ khi tôi đẩy nó đang thay đổi repo ban đầu.
WowBow

Bạn có thể vui lòng cho tôi biết làm thế nào để đẩy sang repo mới? Tôi đã tạo bản sao và tạo repo mới nhưng tôi không thể đẩy sang repo mới.
WowBow

5
Bạn phải thay đổi điều khiển từ xa. Nếu không, nó sẽ cố gắng đẩy đến cùng một vị trí. git remote rm origintiếp theogit remote add origin URL-to-new-repository
wadesworld

1

Tôi đã làm theo các hướng dẫn chính thức này để "Sao chép một kho lưu trữ" và nó dường như hoạt động.

https://help.github.com/articles/d repeatating-a-reposeective/

Để tạo một bản sao của một kho lưu trữ mà không cần giả mạo, 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 lưu trữ mới. Điều này hoạt động với bất kỳ kho lưu trữ git nào, không chỉ các kho lưu trữ trên GitHub.


1

Thật không may, giải pháp được chấp nhận của VonC, thật không may, không hiệu quả với tôi khi tôi có

từ xa: Không tìm thấy kho lưu trữ

Những gì đã làm việc là như sau:

  1. Tạo một bitcoin mới tại github
  2. git clone new_Vpo
  3. cd new numpo
  4. git từ xa thêm ngược dòng old numpo.git
  5. git kéo thượng nguồn
  6. git đẩy nguồn gốc

Tôi đã nhận được tất cả các bên trên từ đây .


1

Đối với những người không am hiểu về công nghệ sử dụng GitHub, đây là một giải pháp đơn giản thay thế cho các câu trả lời tuyệt vời khác ở trên. Những gì bạn cần chỉ là một ứng dụng GitHub Desktop.

  1. Mở repo dự án của riêng bạn từ trình duyệt và tải xuống dưới dạng zip, vd your-project-master.zip.
  2. Giải nén và đổi tên nó thành repo mới của bạn.
  3. Mở GitHub Desktop và thêm repo mới của bạn bằng cách duyệt nó vào repo đường dẫn cục bộ mới được giải nén của bạn. nhập mô tả hình ảnh ở đây
  4. Xuất bản nó lên github của bạn, bằng cách nhấp vào nút xuất bản. Đừng quên thêm tên và mô tả :)


-1

Chỉ cần thử điều này, và nó đã làm việc:

  1. Ngã ba repo của bạn vào một tài khoản tổ chức
  2. Đổi tên nó
  3. Chuyển quyền sở hữu lại cho chính bạn

4
Ý tưởng hay nhưng tôi chỉ thử cái này và gặp lỗi : aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spiers

điều này là do giờ đây họ đã chuyển hướng sau khi bạn đổi tên hoặc chuyển repos của bạn github.com/blog/1508-reposeective-redirects-are-here
Shadowbq 18/07/17

-1

Khi bạn tạo một repo mới, bạn có thể nhập từ một repo khác với url repo .git. Phải mất 30 giây.

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.