1334 字
7 分钟

Git 奇招:无缝接轨远程分支,解锁未合并PR的新特性!

开篇:你是不是也遇到过这个问题?#

说实话,我刚开始参与开源项目的时候,真的超级郁闷。

你看啊,一个你特别喜欢的开源项目,有个大佬提交了一个超级酷的功能 PR。你心里那个急啊,简直迫不及待想试试。可是原作者呢?可能太忙了,可能忘了,反正那个 PR 就在那儿挂着,一个月两个月过去了还没合并。

我当时真的想:要不自己直接把那个 PR 的代码搞下来试试?

相信我,你绝对不是一个人!今天我就把我的踩坑经验全盘托出,教你如何优雅地把 fork 仓库中未合并的 PR 分支合并到本地,立马体验新功能。

第一步:先克隆原作者的仓库#

咱们先从最基本的开始:

Terminal window
git clone https://github.com/original-author/repo.git
cd repo

这里有个小细节要提醒你:一定要克隆原作者的仓库,而不是你自己的 fork。我刚开始的时候就搞错了,结果后面一堆麻烦。

第二步:把 fork 的仓库加进来#

这一步是关键,你听我说:

Terminal window
git remote add forked https://github.com/forked-author/repo.git

啥意思呢?简单说就是告诉 Git:“嘿,这里还有个远程仓库,记得把它也管起来。”

这样操作后,你的本地就有了两个远程仓库:

  • origin: 原作者的仓库
  • forked: 那个提交 PR 的 fork 仓库

避坑提示:我以前犯过一个错误,把名字起得特别长,后来输入命令的时候简直崩溃。所以建议用简短好记的名字,比如 forked 或者 pr-branch

第三步:获取远程分支信息#

别急,还没完呢:

Terminal window
git fetch forked

这步做啥?就是把 forked 仓库的所有分支和提交记录下载到本地。

划重点:这里只是下载,还不会合并到你的代码里。这就好比你先把快递拿回家,但还没拆封。

第四步:创建一个安全的工作分支(超级重要!)#

说真的,这个步骤我一开始总觉得没必要,后来狠狠踩了坑才明白:

Terminal window
git checkout -b merge-feature-branch

为什么要这样?因为你不想直接在主分支上瞎折腾,万一搞砸了多尴尬。

我之前就犯过这个错误,直接在 main 分支上操作,结果冲突解决了一半想放弃,回滚都不好回。所以,这个步骤千万别偷懒!

第五步:合并目标分支#

重头戏来了:

Terminal window
git merge forked/feature-branch

这时候,forked/feature-branch 分支的代码就会被合并到当前分支。

小知识:为什么是 forked/feature-branch 而不是直接 feature-branch?因为 forked 是远程仓库的名字,feature-branch 是远程仓库的分支名,中间用斜杠隔开。这个语法刚开始我也绕晕了好久。

第六步:处理冲突(可能会遇到)#

说实话,冲突这事儿真的挺烦人的。不过别怕,我们一步步来。

当你看到类似这样的冲突标记时:

<<<<<<< HEAD
# 这是 main 分支的代码
RUN apt-get update && apt-get install -y package1
=======
# 这是 feature-branch 分支的代码
RUN apt-get update && apt-get install -y package2
>>>>>>> feature-branch

这里有三部分:

  • <<<<<<< HEAD======= 之间:你当前分支的代码
  • =======>>>>>>> feature-branch 之间:要合并的分支代码

怎么解决冲突?三种策略:

  1. 保留其中一个分支的代码 - 把另一段删掉
  2. 合并两边的代码 - 两段都保留,手动整合
  3. 进行更复杂的修改 - 完全重写这部分代码

我个人的经验是:先理解两段代码的意图,再决定怎么合并。不要看到冲突就慌,搞清楚每个版本要解决什么问题。

解决完后记得标记:

Terminal window
git add <已解决冲突的文件>

第七步:提交合并结果#

差不多搞定了:

Terminal window
git commit -m "合并来自 forked 仓库 feature-branch 分支的修改"

建议写清楚点,以后回看的时候才知道这次合并干了啥。

第八步:推送到远程仓库(可选)#

如果你想把合并后的代码推送到自己的仓库:

Terminal window
git push origin merge-feature-branch

这样你就可以在自己的仓库里查看和测试合并后的代码了。

回顾一下核心要点#

说这么多,我们总结一下:

  1. ✅ 克隆原作者仓库,不是 fork 仓库
  2. ✅ 用 git remote add 添加 fork 仓库
  3. ✅ 用 git fetch 获取远程分支
  4. 一定要创建新分支,别直接在主分支操作(我的血泪教训)
  5. ✅ 用 git merge forked/feature-branch 合并
  6. ✅ 遇到冲突不要慌,先理解再解决
  7. ✅ 用 git add 标记已解决的冲突文件
  8. ✅ 提交前写清楚 commit 信息

现在就可以开始:#

  1. 打开你常用的 Git 客户端(命令行也行)
  2. 找一个你想试用的 PR 分支
  3. 按照上面的步骤操作一遍

相信我,多试几次你就能掌握了。我刚开始的时候也觉得复杂,现在闭着眼都能操作。

遇到问题别怕,记住:每一次踩坑都是在积累经验。你现在遇到的困难,以后都会成为你的武器。

加油!开源世界的大门已经为你打开了 🚀

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Git 奇招:无缝接轨远程分支,解锁未合并PR的新特性!
https://blog.moewah.com/posts/git-merge-unmerged-pr-feature/
作者
GoWah
发布于
2025-04-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GoWah
Hello, I'm GoWah.
分类
标签
站点统计
文章
160
分类
9
标签
350
总字数
301,106
运行时长
0
最后活动
0 天前

目录