如何在 GitHub 中创建拉取请求

学习如何 Fork 代码仓库、进行更改,并请求维护者审查和合并。
250 位读者喜欢这篇文章。
a checklist for a team

Opensource.com

所以,您知道如何使用 Git。您有一个 GitHub 仓库,并且可以推送代码到其中。一切都很好。但是,您究竟如何为别人的 GitHub 项目做贡献呢? 这就是我在学习 Git 和 GitHub 后想要了解的。 在本文中,我将解释如何 Fork 一个 Git 仓库、进行更改并提交拉取请求。

当您想在 GitHub 项目上工作时,第一步是 Fork 代码仓库。

Forking a GitHub repo

使用我的演示仓库来试用它。

到达那里后,单击右上角的 Fork 按钮。 这将在您的 GitHub 用户帐户下创建一个新的演示仓库副本,其 URL 类似于

https://github.com/<YourUserName>/demo

该副本包含原始仓库中的所有代码、分支和提交。

接下来,通过打开计算机上的终端并运行以下命令来克隆仓库

git clone https://github.com/<YourUserName>/demo

仓库克隆完成后,您需要做两件事

  1. 通过发出以下命令创建一个新分支

    git checkout -b new_branch
  2. 使用以下命令为上游仓库创建一个新的远程仓库

    git remote add upstream https://github.com/kedark3/demo

在本例中,“上游仓库”指的是您从中 Fork 的原始仓库。

现在您可以对代码进行更改。 以下代码创建一个新分支,进行任意更改,并将其推送到 new_branch

$ git checkout -b new_branch
Switched to a new branch ‘new_branch’
$ echo “some test file” > test
$ cat test
Some test file
$ git status
On branch new_branch
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    test
nothing added to commit but untracked files present (use "git add" to track) 
$ git add test
$ git commit -S -m "Adding a test file to new_branch"
[new_branch (root-commit) 4265ec8] Adding a test file to new_branch
 1 file changed, 1 insertion(+)
 create mode 100644 test
$ git push -u origin new_branch
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 918 bytes | 918.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Remote: Create a pull request for ‘new_branch’ on GitHub by visiting:
Remote:   http://github.com/example/Demo/pull/new/new_branch
Remote: 
 * [new branch]  	new_branch -> new_branch

将更改推送到您的仓库后,比较 & 拉取请求 按钮将出现在 GitHub 中。

GitHub's Compare &amp; Pull Request button

opensource.com

单击它,您将进入此屏幕

GitHub's Open pull request button

单击 创建拉取请求 按钮打开拉取请求。 这允许仓库的维护者审查您的贡献。 从这里,如果代码良好,他们可以合并它,或者他们可能会要求您进行一些更改。

总结

总而言之,如果您想为一个项目做贡献,最简单的方法是

  1. 找到您想要贡献的项目
  2. Fork 它
  3. 将其克隆到您的本地系统
  4. 创建一个新分支
  5. 进行您的更改
  6. 将其推送回您的仓库
  7. 单击 比较 & 拉取请求 按钮
  8. 单击 创建拉取请求 以打开新的拉取请求

如果审阅者要求进行更改,请重复步骤 5 和 6 以向您的拉取请求添加更多提交。

祝您编码愉快!

接下来阅读什么
标签
User profile image.
Kedar 是红帽公司的软件质量工程师,负责 CloudForms (上游 ManageIQ) 项目,主要负责内部基础设施的部署/管理。 对 Jenkins Pipeline 和 Ansible 用于自动化部署感兴趣。 也在编写用于监控和警报的 Shinken 模块。

5 条评论

哇,非常感谢您与我们分享这篇内容丰富的文章! 我真的很喜欢您的这篇文章。

关于 Git 的术语,有很多东西我很难理解。
“为上游仓库创建一个新的远程仓库”。 远程仓库-什么? 远程是一个形容词。 “上游仓库” - 指的是什么?
我仍然不明白“拉取请求”这个术语从何而来,它到底是什么意思。 这些东西可以用人类可以理解的语言解释吗?

嘿 Greg,我写了一些关于 Git 的文章,您可能会觉得有帮助。 https://open-source.net.cn/user_articles/131551/131551

另外,之所以称为拉取请求,是因为当您希望将您的代码合并到别人的项目中时,您请求他们“拉取”它。 因此,它被称为拉取请求。 :) 上游通常是别人拥有的仓库,您想为其做出贡献。
最后,远程只是一个术语,用于表示您与之交互的 URL 的名称。 如果您克隆了一个 Git 仓库,您可以运行

git remote -v

您将看到所有远程仓库,默认情况下通常称为 “Origin”。 当您运行类似以下的命令时

git push origin xyz
git pull origin xyz

该 origin 将被替换为实际的 URL,以便 Git 知道将代码推送到哪里。

希望对您有所帮助。

回复 ,评论者: Greg P

非常实用的文章。 多谢!

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.