GitLab或者GitHub中的Fork可以理解为一个物理副本,用来管理代码的一种手段。
在参与开源项目代码贡献时,通常不会直接获得源代码仓库的Developer权限。这点和一般公司开发不太一样,公司一般都是设置在分支上是否有Push权限。使用Fork将代码物理复制一份在自己的NameSpaces下进行代码开发,开发时可对分支做任意的更改、删除以及commit或者push,过程中完全像是开发自己的代码一样。
什么是Fork
GitLab或者GitHub中的Fork可以理解为一个物理副本,用来管理代码的一种手段。
在参与开源项目代码贡献时,通常不会直接获得源代码仓库的Developer权限。这点和一般公司开发不太一样,公司一般都是设置在分支上是否有Push权限。使用Fork将代码物理复制一份在自己的NameSpaces下进行代码开发,开发时可对分支做任意的更改、删除以及commit或者push,过程中完全像是开发自己的代码一样。
如何进行Fork
以GitLab为例。首先,使用张三创建一个名为xlog的项目,项目权限为Owner,同时设置李四的权限为Reporter。如下:
然后在张三的账号可以看到如下结构:
使用张三的账号点击进入xlog项目,如下:
点击右上角Fork,如下:
核心点:
- 选择一个namespace,一般都是选择自己的GitLab名字
- 选择可见级别,默认private
- 输入项目名字,一般都是默认
最后点击Fork Project,完成Fork,如下图:
将远程仓库更新到Fork仓库
在GitLab或者GitHub平台上,开发者张三Fork了开发李四的项目以后,如果后续李四继续提交项目,那么张三在Fork的代码中如何获得更新?
1、给Fork库配置远程仓库位置,先查看远程仓库状态:
$ git remote -v
origin http://lisi:dockerOne@192.168.109.115/lisi/ (fetch)
origin http://lisi:dockerOne@192.168.109.115/lisi/ (push)
- 1
- 2
- 3
- 4
2、为Fork库添加远程upstream地址:
$ git remote add upstream http://192.168.109.112/zhangsan/
- 1
- 2
3、使用git remote -v检查是否配置成功:
$ git remote -v
origin http://lisi:dockerOne@192.168.109.115/lisi/ (fetch)
origin http://lisi:dockerOne@192.168.109.115/lisi/ (push)
upstream http://192.168.109.115/zhangsan/ (fetch)
upstream http://192.168.109.115/zhangsan/ (push)
- 1
- 2
- 3
- 4
- 5
- 6
4、抓取远程upstream
$ git fetch upstream
- 1
5、查看upstream日志,如下命令和图例:
$ git log --all --graph --oneline
* 71d3aa7 (upstream/main) 测试Fork
* 9ca3f3b (HEAD -> main, origin/main, origin/HEAD) no message
- 1
- 2
- 3
- 4
6、将远程upstream上的代码merge到Fork
git merge upstream/main
- 1
7、将本地Fork的代码提交
git push origin main
- 1
推荐:
Gitlab CE安装
Git命令小本本
参考:
/weixin_43517190/article/details/125159723
/u013673437/article/details/127198924