Git 进阶知识:Issue、Fork、PR 与多仓库管理

在团队协作开发中,Git 不仅仅是版本控制工具,更是协作开发的桥梁。本文将介绍几个重要的 Git 协作概念和实践技巧。


一、Issue:代码托管平台的问题追踪

在 GitHub、Gitee 等代码托管平台上,使用者发现 Bug 或有功能建议时,可以通过 Issue 向作者反馈。作者和提问者可以在 Issue 中进行讨论、沟通,直到问题解决后关闭 Issue。

Issue 的核心功能

  • 状态管理:Issue 有打开(Open)和关闭(Closed)两种状态,方便追踪问题处理进度

  • 丰富标记:可以添加标签(Label)进行分类,如 bugenhancementdocumentation

  • 关联分支:可以将 Issue 与特定分支关联,方便追踪代码修改

  • 互动讨论:作者和提问者可以在 Issue 中评论互动,沟通问题细节

  • 指派负责人:可以指定谁来处理这个问题

作者可以和其他开发者进行喋喋不休的争论,然后默默的去改bug

这是在github上的issure的打开位置,我们可以看到,有很多的搜索选项,打开和关闭,issure打开和关闭,作者,标签,项目,等等。

还可以看到作者和提问者扯皮的痕迹。


二、Fork:项目复用与贡献

2.1 什么是 Fork?

Fork 是指将别人的项目完整复制一份到自己的账户下,一键拉取作者的所有提交记录,这个项目就彻底成为你自己的了。你可以:

  • 自由修改代码并提交更新

  • 将作者后续的更新同步到自己的项目中

  • 完全掌控项目的开发方向

  • 原作者后续的开发与当前项目没有关系。

2.2 Fork 的使用场景

  1. 参与开源项目:你想为某个开源项目贡献代码,但没有直接写入权限

  2. 学习研究:复制项目到自己账户进行学习和修改

  3. 二次开发:基于开源项目进行自己的定制开发

  4. 保存版本:保留一个特定版本的项目副本

2.3 Fork 的操作步骤

# 1. 在 GitHub/Gitee 上 Fork 项目(点击 Fork 按钮)
​
# 2. 克隆自己 Fork 的项目
git clone https://github.com/你的用户名/项目名.git
​
# 3. 添加原项目为上游仓库
git remote add upstream https://github.com/原作者/项目名.git
​
# 4. 查看远程仓库配置
git remote -v


三、PR(Pull Request):代码合并请求

3.1 什么是 PR?

PR(Pull Request)是向原项目作者发起的代码合并请求。当你修改了代码后,通过 PR 请求原作者审核并合并你的修改。

3.2 PR 的工作流程

3.3 创建 PR 的步骤

# 1. 在本地创建新分支进行修改
git checkout -b feature/my-new-feature
​
# 2. 进行代码修改并提交
git add .
git commit -m "feat: 添加新功能"
​
# 3. 推送到自己的远程仓库
git push origin feature/my-new-feature
​
# 4. 在 GitHub/Gitee 上创建 PR
#    - 选择 base: 原项目的主分支
#    - 选择 compare: 你刚推送的分支
#    - 填写标题和描述
#    - 点击 Create Pull Request

3.4 演示

  1. 我们首先fork别人的仓库

  2. 然后点击 pull request 创建一个新的pr

  3. 创建新的pr 选择分支
    在base仓库我们可以看到有pr

  4. 来到base仓库 被fork的仓库 在base仓库我们可以看到有pr

  5. 同意合并我们就完成了一次pr

3.5 PR 的应用场景

PR 主要有两种使用场景:

场景一:向别人的仓库提交代码(开源贡献)

当你 Fork 了一个开源项目并修改了代码后,可以通过 PR 请求原作者合并你的修改:

  • 你 Fork 了原作者的项目

  • 在本地修改代码并 push 到你的远程仓库

  • 向原作者的仓库发起 PR

  • 原作者审核后决定是否合并

场景二:团队内部合并到受保护的主分支

在团队开发中,master/main 分支通常是被保护的,开发者没有直接 push 的权限,必须通过 PR 来合并代码:

  • 开发者在功能分支上完成开发

  • 向 master/main 分支发起 PR

  • 团队成员或负责人审核代码

  • 审核通过后才能合并到主分支

这种保护机制可以确保代码质量,防止未经审核的代码直接进入主分支。


四、绑定多个远程仓库

为什么需要多个远程仓库?

在实际开发中,你可能需要同时管理多个远程仓库:

比如国内网络不方便gitub,不能持续的对github进行提交,我们会把仓库提交到gitee,然后提交到github上。

4.1 首先会在gitee和github上创建一个空的仓库

.....

4.2 查看当前远程仓库配置

# 查看远程仓库信息
git remote -v
​
# 输出示例:
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

4.3 添加多个远程仓库

# 添加 Gitee 作为第二个远程仓库
git remote add gitee https://gitee.com/你的用户名/项目名.git
​
git remote add github https://github.com/你的用户名/项目名.git
​
# 再次查看,确认添加成功
git remote -v

输出示例:

origin    https://github.com/user/repo.git (fetch)
origin    https://github.com/user/repo.git (push)
gitee     https://gitee.com/user/repo.git (fetch)
gitee     https://gitee.com/user/repo.git (push)

4.4 推送到多个远程仓库

# 推送到 GitHub(origin)
git push origin main
​
# 推送到 Gitee
git push gitee main
​
# 推送到 Github
git push github main

4.6 查看配置

.git/config 文件中可以看到配置:

[remote "origin"]
    url = https://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
​
[remote "gitee"]
    url = https://gitee.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/gitee/*

五、总结

功能 作用 使用场景
Issue 问题追踪和任务管理 Bug 报告、功能请求、任务分配
Fork 创建项目副本 参与开源、学习研究、二次开发
PR 代码合并请求 团队协作、代码审核、贡献代码
多远程仓库 同步管理多个仓库 多平台备份、多环境管理

掌握这些 Git 协作技巧,能让你在团队开发和开源贡献中更加得心应手!


参考资料

都看到这里了,点个小赞不要钱点个收藏不迷路!十分感谢

有问题我会一一回复!👇

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐