Git中Fork使用

时间:2024-10-10 07:38:28

GitLab或者GitHub中的Fork可以理解为一个物理副本,用来管理代码的一种手段。

在参与开源项目代码贡献时,通常不会直接获得源代码仓库的Developer权限。这点和一般公司开发不太一样,公司一般都是设置在分支上是否有Push权限。使用Fork将代码物理复制一份在自己的NameSpaces下进行代码开发,开发时可对分支做任意的更改、删除以及commit或者push,过程中完全像是开发自己的代码一样。

什么是Fork

GitLab或者GitHub中的Fork可以理解为一个物理副本,用来管理代码的一种手段。

在参与开源项目代码贡献时,通常不会直接获得源代码仓库的Developer权限。这点和一般公司开发不太一样,公司一般都是设置在分支上是否有Push权限。使用Fork将代码物理复制一份在自己的NameSpaces下进行代码开发,开发时可对分支做任意的更改、删除以及commit或者push,过程中完全像是开发自己的代码一样。

如何进行Fork

以GitLab为例。首先,使用张三创建一个名为xlog的项目,项目权限为Owner,同时设置李四的权限为Reporter。如下:

image-20221205230013156

然后在张三的账号可以看到如下结构:

image-20221205230955686

使用张三的账号点击进入xlog项目,如下:

image-20221205231400596

点击右上角Fork,如下:

image-20221205231605196

核心点:

  1. 选择一个namespace,一般都是选择自己的GitLab名字
  2. 选择可见级别,默认private
  3. 输入项目名字,一般都是默认

最后点击Fork Project,完成Fork,如下图:

image-20221205231912499

将远程仓库更新到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