7

GitHub中Fork来的仓库如何进行双向更新 - FlyLolo

 2 years ago
source link: https://www.cnblogs.com/FlyLolo/p/git-fork-update.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client



一、做点贡献

想对别人的某个仓库“做点贡献”怎么办?

1. Fork该仓库

首先Fork该仓库,本文以git-learn这个仓库为例

image-20220606054302891

这样自己的账号下就会出现这样一个仓库

image-20220606054543313

2. Clone代码并修改

然后把这个仓库clone下来

git clone https://github.com/FlyLolo/git-learn.git

我新建了一个Student类

image-20220606061553375

3. 提交修改到自己的仓库

然后将修改提交

git add .

git commit -m 'add student'

git push origin master

这样会将修改提交到自己账号下的git-learn仓库

那么如何将修改提交到源仓库呢?

4. 提交pull requests

如果想将修改提交到源仓库,需要进行pull requests

image-20220606061958093

点击上图的pull requests按钮,可以看到自动做了配置

image-20220606062106874

图中红框部分显示了提交修改的方向,即从自己账号仓库的main分支提交到源仓库的main分支。

点击create pull request按钮:

image-20220606062306787

点击下面的按钮提交就可。

5. 源仓库审核pull requests

此时源仓库的作者在源仓库的pull requests页面就会看到如下的Merge pull请求

image-20220606062421689

可以对该请求做相应的处理

image-20220606062810735

比如点击Merge pull request同意将修改合并。

二、Fork过来的仓库如何更新

当一个仓库被Fork过来之后,它是不会随着源仓库更新的,那么如果想同步源仓库的更新过来如何操作呢?

还是pull requests。

image-20220602075033283

默认是向原仓库提交修改请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1L0ByGC-1654552184213)(git-tag-update.assets/image-20220602094759603.png)]

我们现在不一样,想用原仓库更新fork过来的仓库

首先修改左侧的,改成自己的仓库

image-20220602095127386

此时会变成这样

image-20220602094949393

点击图中的蓝字“ compare across forks”,可以看到箭头两边都是自己的仓库

image-20220602095322677

更改右侧的仓库,最终结果如下图

image-20220602095519344

已经找到了更新,点击右上角的create pull request 按钮

image-20220602095655148

更新即可,这样就完成了main分支的更新。

三、 如何获取并更新指定Tag

看一下如何通过Fork方式满足的我源码阅读需求。

首先我想阅读的是指定版本的源码,例如tomcat的10.0.21版本,这需要我去clone它的tag 10.0.21,这样才能保证版本一致。

1. 如何Clone指定的标签

这里我指定了标签 v1.0

git clone -b v1.0 https://github.com/FlyLolo/git-learn.git
image-20220602070738857

切换到对应的文件夹

cd git-learn

2. 我要添加注释

我想对部分代码进行注释,并提交到自己的仓库。(源仓库估计不会接收这样的修改请求,自己看就行了)

修改一个文件,例如添加了一个注释

image-20220602071500974

准备提交修改

image-20220602071742458

提示detached HEAD

如果是在IDEA中也会提示失败

其实clone的时候已经有提示,见第一幅图的红框提示。需创建并切换到一个新的分支。我将其命名为tag-v1.0

git switch -c tag-v1.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aIHXykxD-1654552184220)(git-tag-update.assets/image-20220602071921679.png)]

push的时候如果未指定分支会有如下提示:

image-20220602072106796

按提示操作:

image-20220602072219589

提交成功。网页查看一下,已经有了新建的分支:

image-20220602074549946

3. 代码如何更新版本

如果此时源仓库更新了v2.0甚至v3.0版本,而我这里还是v1.0的代码怎么办?

3.1 一次失败的尝试

首先,我想到了第二节的反向pull request, 机智如我

image-20220606065110508

做了如上图配置,右侧选择了源仓库的tag v3.0 ,如愿的识别出了差异,但此时才发现原来的create pullrequest按钮没有了,尝试失败。

3.2 通过upstream获取更新合并

查看现有的remote地址

git remote -v

添加源仓库地址到upstream

git remote add upstream https://github.com/Test-2022/git-learn.git

再次查看remote地址列表

git remote -v
image-20220606063911591

获取upstream的数据

git fetch upstream
image-20220606064126658

可以看到获取到了源仓库的各个分支和tag。

也可以获取指定的tag

git fetch upstream tag v3.0
git merge v3.0
image-20220606064603225

如果像这样出现合并冲突,自行解决冲突即可。


Recommend

  • 38

  • 55

  • 27
    • www.cnblogs.com 4 years ago
    • Cache

    关于SignalR 进行双向多步对话

    关于ASP.NET SignalR 解释百度百科是这样说的: ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推...

  • 27

    写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个。但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimball还是DV,这些方法都是很有用的...

  • 9

    开源公共组件仓库的更新日志应该如何写在 GitHub 或 Gitlab 等开源的公共组件仓库里面,应该需要维护更新日志 CHANGELOG.md 文档,方便让用户和开发人员更简单明确的知晓项目在不同版本之间有哪些显著变动。但是没有任何一个能说服所有人的 更新日志 一定...

  • 3
    • wiki-power.com 3 years ago
    • Cache

    如何批量拉取 Git 仓库更新

    如何批量拉取 Git 仓库更新仓库一多,逐个手动拉取就会变得很麻烦。使用本文的方法,可以对 Git 仓库进行批量拉取操作。步骤

  • 2

    This site can’t be reached theliang.coding.me’s server IP address could not be found. ...

  • 2
    • zycslog.github.io 2 years ago
    • Cache

    如何进行 Git 仓库瘦身

    如何进行 Git 仓库瘦身对 Git 仓库的维护通常是为了减少仓库的大小。如果你从另外一个版本控制系统导入了一个仓库,你可能需要在导入后清除掉不必要的文件。本文着重于从一个 Git 仓库中删除大文件,并且包含下列主题: 理解从 Git 的历史记录...

  • 4

  • 3
    • blog.51cto.com 1 year ago
    • Cache

    Git更新远程仓库代码到本地

    1、查看远程分支 [root@linux-node1 opslinux]# git remote -v origin https://github.com/Lancger/opslinux.git (fetch) origin https://github.com/Lancger/opslinux.git (push)

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK