fork仓库


此时会将该仓库在复制一份,并存放在你的路径下:

设置上游代码库
进入本地代码库:
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 从自己仓库进行clone(fork) git clone https://github.com/qiqiuyang/bk-ci.git
# 进入目录 cd bk-ci/
# 查看目录结构 $ ls CHANGELOG CONTRIBUTING.md README_EN.md support-files CODE_OF_CONDUCT.en.md docker-images README.md THIRD-PARTY-NOTICES.txt CODE_OF_CONDUCT.md docs scripts CODEOWNERS helm-charts SECURITY.md CONTRIBUTING.en.md LICENSE.txt src
|
查看远程仓库的路径
1 2 3
| $ git remote -v origin https://github.com/qiqiuyang/bk-ci.git (fetch) origin https://github.com/qiqiuyang/bk-ci.git (push)
|
这里可以发现从自己仓库clone下来后,fetch和push的路径都是自己的。
设置上游代码库
1
| $ git remote add upstream git@github.com:TencentBlueKing/bk-ci.git
|
再次查看远程仓库地址:
1 2 3 4 5
| $ git remote -v origin https://github.com/qiqiuyang/bk-ci.git (fetch) origin https://github.com/qiqiuyang/bk-ci.git (push) upstream git@github.com:TencentBlueKing/bk-ci.git (fetch) upstream git@github.com:TencentBlueKing/bk-ci.git (push)
|
同步源仓库的更新
使用下面的命令拉取源仓库的更新:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $ git fetch upstream remote: Enumerating objects: 17643, done. remote: Counting objects: 100% (13492/13492), done. remote: Compressing objects: 100% (3960/3960), done. remote: Total 10070 (delta 4278), reused 8600 (delta 3184), pack-reused 0 (from 0) 接收对象中: 100% (10070/10070), 2.44 MiB | 2.05 MiB/s, 完成. 处理 delta 中: 100% (4278/4278), 完成 657 个本地对象. 来自 github.com:TencentBlueKing/bk-ci * [新分支] master -> upstream/master * [新分支] release-1.11 -> upstream/release-1.11 * [新分支] release-1.14 -> upstream/release-1.14 * [新分支] release-1.2 -> upstream/release-1.2 * [新分支] release-1.3 -> upstream/release-1.3 。。。 。。。 * [新标签] v1.8.4 -> v1.8.4 * [新标签] v1.8.5 -> v1.8.5
|
到这里就比较清晰了,在更新时就是把源仓库的更新的分支放在upstream下,例如:upstream/master
所以同步远端分支时,就是git fetch upstream,然后将自己的分支merge目标分支内容,例如:git merge upstream/master
如此便可以实现自己的fork仓库同步源仓库的新变更了。
向原仓库发起PR
首先在自己的仓库点击Pull Request->New Pull Request,进入以下截图页面

base repository为原仓库的某个分支,head repository为fork仓库发某个分支, head的某个分支代码合到base的某个分支

进入原仓库的Pull requests可看到刚才发起的PR, 这里就不演示了