关于github:Github-本地合并-merge-他人提交的-pr

54次阅读

共计 1489 个字符,预计需要花费 4 分钟才能阅读完成。

Github 上有些我的项目可能作者长时间没有进行保护, 会呈现有些新的 pr 没有合并到主分支 master 上. 这时如果想在本地利用这个新的 pr 呢? 一般来说次要有以下几种形式:

  • 针对提交的 pr , 查看具体的改变文件和改变内容, 而后在本地进行对应的批改.
  • 通过 git mergegit cherry-pick 进行合并.

手动批改 PR 内容

github 上的 w3m 为例, 查看 pull requests 列表如下:

咱们抉择最初一个比较简单的 PR 进行查看, 点击 Files changed 查看文件具体的变更信息.

依据文件的具体变更信息, 对应的在本地进行相应的批改. 这种形式只适宜扭转很少的 PR. 如果 PR 的信息量比拟大的时候, 那就不适宜了. (除非十分喜爱手工活☴)

通过 Git 命令合并

首先咱们通过 git clone 把对应的仓库下载到本地. 通过以下命令能够查看近程仓库为 origin, 这也时克隆后默认提供的近程仓库名称.

➜  w3m git:(master) ✗ git remote -v
origin  https://github.com/tats/w3m (fetch)
origin  https://github.com/tats/w3m (push)

接着咱们通过 PR 中的信息, 找到具体的 PR 提供者的仓库, 并复制其仓库地址.

通过命令 git remote add 近程仓库名 近程仓库地址 减少新的近程仓库信息.

➜  w3m git:(master) ✗ git remote add testpr1 https://github.com/ctrlcctrlv/w3m.git

➜  w3m git:(master) ✗ git remote -v
origin  https://github.com/tats/w3m (fetch)
origin  https://github.com/tats/w3m (push)
testpr1 https://github.com/ctrlcctrlv/w3m.git (fetch)
testpr1 https://github.com/ctrlcctrlv/w3m.git (push)

仓库减少胜利后, 通过 git fetch 仓库名 把新加的近程仓储代码下载到本地.

➜  w3m git:(master) ✗ git fetch testpr1
remote: Enumerating objects: 9074, done.
remote: Counting objects: 100% (4961/4961), done.
remote: Compressing objects: 100% (144/144), done.

最初通过 mergecherry-pick 合并整个分支或者某个具体的提交. 上面是如何查看具体的分支和 commitid 信息.


# 合并具体的 commitid
➜  w3m git:(master) ✗ git cherry-pick 12eac50d44f7c02987a78b7f4d55477370afc1b1
[master e87730b] Use libsixel fork with CVE fixes
 Author: Fredrick Brennan <copypaste@kittens.ph>
 Date: Sat Jun 12 21:49:02 2021 -0400
 1 file changed, 1 insertion(+), 1 deletion(-)

# 合并具体的分支
➜  w3m git:(master) git merge testpr1/patch-1

当咱们合并完相干的 PR 时, 能够通过 git remote rm 仓库名 进行清理 PR 近程仓库的相干信息.

➜  w3m git:(master) git remote rm testpr1
➜  w3m git:(master)

正文完
 0