GitHub無法fork同一個倉庫的分叉倉庫,通過git命令解決問題,可以正常pull requests
核心思路,已有從源GitHub A倉庫fork過來的A1倉庫,clone A1倉庫到本地,將另一個A倉庫的分叉 A2倉庫 的一個branch作為一個新建branch建立在本地,最後將其push到遠端A1倉庫中即可。
在GitHub上這個branch可以正常開pull requests到A2倉庫或其他A倉庫的分叉倉庫,但Fetch upstream這個便利的功能就只能用於同步來自A倉庫的branch,而來自於A2倉庫的branch則不能享受這項便利的功能,得手動在本地fetch pull push。
clone A1倉庫到本地
推薦使用遠端倉庫的ssh地址clone到本地。
git clone [email protected]:XXX/A1.git
如果已經clone過了,就與遠端倉庫同步一下保證後續步驟不會出錯。
git fetch
git pull
新增remote A2遠端倉庫地址
檢視當前remote遠端倉庫地址有哪些。
git remote -v
新增A2遠端倉庫地址,遠端倉庫別名可自定義,新增以後可以再用上面的命令確認一下。
git remote add <遠端倉庫別名> <倉庫地址>
|git remote add <remote> <url>
獲取A2遠端倉庫的分支
git fetch <遠端倉庫別名> <分支>
|git fetch <remote> <branch>
可以檢視一下是否獲取到遠端倉庫的分支。
git branch -a
從A2遠端倉庫的分支新建一個本地分支
git checkout -b <新分支名> --no-track <遠端倉庫別名>/<分支>
git checkout -b <branch> --no-track <remote>/<branch>
此時本地將新建並切換到這個分支,可以檢視一下本地分支。
git branch -a
推送到A1遠端倉庫
origin遠端倉庫即我們自己的A1倉庫,將本地分支推送到這裡面去即可。
git push --set-upstream origin <分支>
git push --set-upstream origin <branch>
手動更新分支與A2倉庫同步
git pull <遠端倉庫別名> <遠端分支>:<本地分支>
git pull <remote> <branch>:<branch>
再推送到A1遠端倉庫。
git push