github上我們經常fork其他人的**,然後經過一通魔改後弄出"自己"的東西。但是現在我遇到了這麼乙個需求,就是我已經公開了乙個自己的庫(暫且叫parent
),然後我想基於自己開發的庫再建立新的功能,但是又不想讓新功能公開,乙個很自然的想法是庫parent
保持公開,然後新建立一條分支隱藏,可惜的是github並不支援這個功能。所以乙個可行的辦法就是fork自己的庫,但是不是直接fork,因為你也沒法fork自己的庫,間接實現的方法如下:
$ git clone
注意,乙個比較重要的概念是github的分支分為本地端和遠端,我們先看一下兩端的分支情況
*master
origin (fetch)
origin (push)
cd child
git remote add upstream
上面**的意思是給child
庫的遠端加上乙個名字為upstream
的分支,該分支路徑則是你想要fork的庫的路徑。
我們可以輸入git remote -v
檢視現在遠端分支的情況
origin (fetch)
origin (push)
upstream (fetch)
upstream (push)
第2步只是遠端分支進行了fork,真正要使用**,我們還需要把upstream遠端分支同步到本地,方法如下:
git pull upstream master
如果你遇到了fatal: refusing to merge unrelated histories
報錯資訊,可以加上--allow-unrelated-histories
,即
git pull upstream master --allow-unrelated-histories
這樣遠端parent
**就同步到裡新建立的child
庫了。如果你想要和parent
保持一致,可以通過上面的pull
方法實現,也可以通過fetch
+merge
的方式。
簡單解釋就是:
這裡的遠端分為被轉殖的parent
(即upstream
)和child
(即origin
)。
git push origin master
git push upstream master
當然,如果你不想child
影響到parent
,你可以在parent
的settings/branches
裡設定branch protection rules
,勾選require pull request reviews before merging
。這樣即使你不小心執行了上面的命令也不會將**同步到upstream
。
如有意合作,歡迎私戳
2019-12-19 15:01:40
GitHub更新自己Fork的專案
github的fork可以將別人的工程複製到自己賬號下。這個功能很方便,但其有乙個缺點是 當源專案更新後,你fork的分支並不會一起更新,需要自己手動去更新。以github使用者 micmiu 賬號名 fork 專案 sql parser 為例子 1 clone 自己賬號裡fork的分支 git c...
github同步fork別人的專案到自己的倉庫
github參考說明,英文好的直接看英文吧 當我們fork乙個專案後,在我們使用 的時候就會以我們本地為準,不會跟隨我們fork前的專案,如果需要同步對方的 需要進行同步操作 ipandadembp cms ipanda git remote v origin fetch origin push i...
在Github和Git上如何Fork?
剛接觸git和github時,最困擾的一件事情就是嘗試解決下面的問題 在git和github上,我能做什麼?現在有這樣一種情形 有乙個叫做joe的程式猿寫了乙個遊戲程式,而你可能要去改進它。並且joe將他的 放在了github倉庫上。下面是你要做的事情 fork他的倉庫 這是github操作,這個操...