贡献代码到开源项目 从 Fork 到 PR

1. 在 GitHub 上 Fork 原始仓库

首先,Fork 原仓库到你的 GitHub 账号下:

  1. 访问原仓库(例如:https://github.com/原作者/仓库名)。
  2. 在页面右上角点击 Fork 按钮,将该仓库复制到你的 GitHub 账号下。
image-ed5dc7d4 image-215f22b6

2. 克隆你自己的仓库到本地

你自己的仓库 克隆到本地,进行修改:

git clone https://github.com/你的用户名/仓库名.git
cd 仓库名
image-010264ef image-e8b56a8c image-5af0511b

3. 设置 Git 配置

如果这是你第一次使用 Git,或者你想设置或更新你的用户名和邮箱,可以运行以下命令:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
//示例:
git config --global user.name "Zwww"
git config --global user.email "2446796988@qq.com"

这些信息会作为你每次提交的元数据,确保你的提交正确关联到你的 GitHub 账户。

4. 设置远程仓库(origin 和 upstream)

为了方便拉取原始仓库的更新,需要设置 上游(upstream)仓库。

  • origin:你的个人仓库(GitHub 中的 fork)。
  • upstream:原始项目的仓库。

查看现有远程仓库配置

git remote -v

添加上游仓库(如果尚未添加)

git remote add upstream https://github.com/原作者/仓库名.git

验证添加的远程仓库

git remote -v

这时你应该看到类似下面的输出:

origin    git@github.com:你的用户名/仓库名.git (fetch)
origin    git@github.com:你的用户名/仓库名.git (push)
upstream  https://github.com/原作者/仓库名.git (fetch)
upstream  https://github.com/原作者/仓库名.git (push)
image-353192c6

(如果不小心设置错了 可以使用:git remote remove upstream 删除)

5. 获取上游仓库的最新代码(可省略)

在开始修改代码之前,确保你的本地仓库是最新的。可以通过以下命令从上游仓库拉取更新:

git fetch upstream

然后将 upstream/main(或 upstream/master)的更改合并到本地的 main(或 master)分支:

git checkout main  # 或者 git checkout master
git merge upstream/main  # 或者 git merge upstream/master

6. 创建新分支进行修改

为了避免直接在 main(或 master)分支上修改且方便管理和组织代码,建议在每个功能或修复上创建一个新的分支,而不是直接在 mainmaster 分支上工作。

git checkout -b feature/your-feature-name

在这里,feature/your-feature-name 可以是你为这次改动取的名字。

image-65ac1a7d

7. 修改代码

至此相关配置完成,和正常开发一样操作就行了

在创建的分支上进行代码修改,修改完后,使用 git addgit commit 将修改提交到本地仓库。

git status
git add .  # 或者指定文件 git add 文件名

git status
git commit -m "描述你做的修改"

8. 将修改推送到 GitHub 上的个人仓库

将修改推送到自己仓库的相应分支:

git push origin feature/your-feature-name
image-2d239854

9. 发起 Pull Request(PR)

  1. 登录 GitHub,进入你自己的仓库页面。
  2. GitHub 会提示你是否发起 PR,点击 Compare & pull request 按钮。
  3. 在 PR 页面,选择:
    1. base repository:选择原始仓库(例如:原作者/仓库名)。
    2. base branch:通常选择 mainmaster
    3. compare branch:选择你刚刚推送的分支(例如:feature/your-feature-name)。
  4. 在 PR 页面填写标题和描述:
    • 标题:简短且描述性地说明你所做的修改。
    • 描述:详细说明你做了哪些修改,为什么做这些修改,是否有任何不兼容变动等。
  5. 点击 Create pull request 提交 PR。

10. 其他可能的操作

  • 更新本地仓库:如果原始仓库有新的提交,你可以通过以下命令将这些提交合并到你的分支。
  git fetch upstream
  git checkout main  # 或 git checkout master
  git merge upstream/main  # 或 git merge upstream/master
  • 解决冲突:如果合并过程中出现冲突,Git 会提示你解决冲突。你需要手动编辑冲突文件并提交解决后的修改。
  git add 解决冲突后的文件
  git commit -m "解决冲突"
  • 删除分支:PR 合并后,如果不再需要该分支,可以删除本地和远程分支。

    删除本地分支:

  git branch -d feature/your-feature-name

删除远程分支:

  git push origin --delete feature/your-feature-name

11. 完成合并

当原作者接受你的 PR 后,修改将会合并到原始仓库。你可以继续开发新的功能,或者做更多的贡献。

image-360466aa

常用 Git 命令总结

  • git clone [url]:克隆远程仓库到本地。
  • git config --global user.name "你的名字":设置 Git 用户名。
  • git config --global user.email "你的邮箱":设置 Git 用户邮箱。
  • git remote -v:查看远程仓库。
  • git remote add [name] [url]:添加远程仓库。
  • git fetch upstream:从上游仓库拉取更新。
  • git checkout -b [branch-name]:创建并切换到新分支。
  • git add .:将修改添加到暂存区。
  • git commit -m "[message]":提交修改并添加提交信息。
  • git push origin [branch-name]:将本地分支推送到远程仓库。
  • git pull origin [branch-name]:从远程仓库拉取并合并代码。
  • git merge [branch-name]:合并指定分支到当前分支。
  • git branch -d [branch-name]:删除本地分支。
  • git push origin --delete [branch-name]:删除远程分支。

项目分区导航git-github资源使用篇 ⬅️ | 07-贡献代码到开源项目从Fork到PR | ➡️ 08-SVN