簡體   English   中英

完全分叉git repo?

[英]Fully fork a git repo?

從這里的大量答案和博客文章中,我還沒有設法將我想知道的內容拼湊起來,所以我問這個問題:

如何分叉git repo,以便獲得上游的所有分支和標簽?

我試過的是:

git init
git remote add origin <ORIGIN_URL> # i.e. my repo
git remote add upstream <UPSTREAM_URL> # i.e. the repo I want to fork
git fetch upstream
git push --all origin

但是當我希望它能工作時,最后一行失敗。 我得到這個:

$ git push --all origin
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to <ORIGIN_URL>

有任何想法嗎?

編輯:

也許您可以將這個問題想成“當您單擊fork按鈕時GitHub實際上會做什么?”,因為這就是我要復制的行為。

試一面鏡子:

git clone --mirror

這樣,就創建了遠程(命名為origin ),而沒有分支的名稱空間。 IOW,鏡像中的refs / heads / master完全對應(並綁定到)原始存儲庫中的refs / heads / master。

現在僅使用此存儲庫,而不是原始的上游存儲庫。 如果您想更新鏡像,請在其中執行以下操作:

cd upstream-mirror.git && git --bare fetch upstream

警告:如果您推入鏡像,修改上游分支,上游存儲庫和鏡像將分開。 和push(不帶-f選項)將失敗,以防止這種情況。

鏡像實際上是上游存儲庫的精確鏡像,您(作為所有者)可以選擇對其進行修改。

這是我想出的最好方法,可以做我想做的事情,它似乎可以正常工作,並且具有與GitHub相似的行為:

git clone --mirror <UPSTREAM> myrepo
cd myrepo
git remote rename origin upstream
git remote add origin <MY_ORIGIN>
git push --all
git push --tags

然后調整.git/config以更改upstream遠程服務器不再鏡像,因為這肯定不是我現在想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM