type
status
date
slug
summary
tags
category
icon
password

概括总结

本文介绍了GitHub中的fork、pull request等概念。fork可以将别人的存储库复制到自己的账户中,pull request用于向项目贡献代码或其他贡献,贡献不仅限于编写代码,还可以参与设计、写作、组织和帮助他人等。此外,文章还介绍了如何在GitHub上进行分叉、克隆、创建分支、提交更改、推送更改、创建拉取请求、同步分叉的主分支和删除分支等操作。

What is forking?

当我们喜欢某人的代码库并希望将其放入我们的GitHub帐户中时,我们会fork它,以便我们可以单独使用它。
当我们fork一个仓库时,我们会得到该仓库的一个实例,包括其完整的历史记录。fork后,我们可以自由地进行任何操作,而不会影响原始版本

What is a pull request?

Pull requests是我们为团队项目或开源项目做出贡献的方式。
例如,用户Harry fork了 ThanoshanMV 的仓库并对该仓库进行了更改。现在,Harry 可以向 ThanoshanMV 发出pull request,但是否接受或拒绝取决于 ThanoshanMV。这就像说:“ThanoshanMV,您可以pull我的更改吗?”

What it means to contribute?

我们不仅可以通过编写代码为开源项目做出贡献,还可以以许多其他方式做出贡献。以下是其中一些方式的描述。
正如99xtechnologyIT公司的黑客精神入门指南所说,我们可以通过以下方式为开源项目做出贡献:
  1. Designing:您可以构建项目的布局,以改善其可用性,根据用户研究计划改进项目的导航和菜单,为标志或T恤创建艺术,并为项目提供样式指南。
  1. Writing:您可以撰写和改进项目文档,或翻译文档,为项目启动newsletter,为项目编写教程并从邮件列表中整理出重点内容,或整理出一个文件夹,展示如何使用项目。
  1. Organizing:您可以链接重复的issues,建议新的issue labels,建议关闭旧的未解决问题,并在最近开放的问题上提出问题以推动讨论。
  1. Help others:回答开放issues,审查他人提交的代码并提供指导,成为另一个贡献者的导师。
  1. Coding:帮助解决任何未解决的问题,询问是否可以提供任何新功能,并改进工具和测试。
 

Let’s make our first pull request!

如果您对Git和GitHub不是很熟悉,请查看The beginner’s guide to Git & GitHub.

1.Fork the repository.

notion image
通过在页面顶部点击分叉按钮来fork仓库。这将在您的帐户中创建该整个存储库的实例。
 

2.Clone the repository.

一旦仓库在您的帐户中,将其clone到您的计算机上以在本地处理它。要clone,请单击克隆按钮并复制链接。
notion image
打开terminal并运行以下命令。它将在本地clone仓库。
notion image
 
现在我们已经从主要的在线项目仓库中设置了主分支的副本。我们需要通过运行这个命令进入那个克隆的目录:`cd [NAME OF REPOSITORY]`
notion image
 

3.Create a branch.

在使用仓库时,不论是小项目还是为团队工作做出贡献,创建一个新分支都是很好的实践。
分支名称应该简短,并反映我们正在进行的工作。现在使用git checkout命令创建一个分支:git checkout -b [Branch Name]
notion image
 

4.Make changes and commit them.

对项目进行必要的更改并保存。
然后执行 git status,你就会看到更改。
notion image
使用git add命令将这些更改添加到您刚创建的分支中:git add .
notion image
 
现在使用git commit命令提交这些更改:
git commit -m "Adding an article to week 02 of articles of the week"
notion image
 

5.Push changes to GitHub.

为了将更改推送到GitHub,我们需要确定远程仓库的名称。git remote
notion image
 
对于这个仓库,远程的名称是“origin”。
在确定了远程的名称后,我们可以安全地将这些更改推送到GitHub。
git push origin [Branch Name]
notion image
 

6.Create pull request.

前往您在GitHub上的存储库,您会看到一个“Compare & pull request”的按钮,然后单击它。
notion image
请提供您所做的必要细节(您可以使用“#”引用问题)。现在提交拉取请求。
Congratulations! 您已经成功提交了第一个拉取请求。
notion image
 
如果您的拉取请求被接受,您将收到一封电子邮件。

7.Sync your forked master branch

在向原仓库提交任何拉取请求之前,您必须将您的仓库与原仓库同步。
即使您不打算向原仓库提交PR,最好与原仓库同步,因为自您分叉原始存储库以来可能已经完成了一些额外的功能和错误修复。
按照以下步骤更新/同步这些更改到您的主分支:
首先,检查一下你在哪个分支。
git branch
notion image
它将列出所有分支,并用绿色指示当前或活动分支。
然后,切换到主分支。
git checkout master
notion image
 
然后,将原始仓库,添加为上游仓库。
为了将原始仓库中的更改拉到您的fork版本中,您需要将原始Git仓库添加为上游仓库。
git remote add upstream [HTTPS]
在这里,[HTTPS] 是你必须从所有者的仓库复制的URL。
notion image
 
notion image
然后,fetch仓库。
从原仓库fetch所有更改。对原仓库的提交将存储在名为upstream/master的本地分支中。
git fetch upstream
notion image
然后,Merge它.
将来自upstream/master的更改merge到您的本地主分支中。这将使您的fork的主分支与上游仓库同步,而不会丢失您的本地更改。
git merge upstream/master
 
最后,将更改push到Github。
此时,您的本地分支已与原仓库的主分支同步。如果您想更新GitHub仓库,则需要push您的更改。
git push origin master
 
👌🏻
注意:同步您的被fork的主分支后,你也可以删除该远程分支。但是,您将来需要更新/同步您的仓库,因此最好保留它。git remote rm [Remote Name]
notion image
 

8.Delete the unnecessary branch.

分支是为了特定目的而创建的。一旦达到了这个目的,这些分支就不再必要,因此可以将它们删除。
git branch -d [Branch Name]
notion image
你也可以在GitHub上删除它的版本。
git push origin --delete [Branch Name]
notion image
 

Conclusion

GitHub是一个强大的版本控制工具。每个人都可以通过发起PR来为开源项目做出贡献。贡献并不总是代码 ——— 还有其他的贡献方式。
最后,我必须告诉你,如果你的拉取请求被拒绝,你不必担心。维护者花费了很多时间来改进他们的项目,他们比我们更了解他们的项目。所以如果你的请求没有被合并,不要担心。
 
📚
题外话:博主安利时间~
最近看了一本书,是入门开源很不错的选择!
notion image
Keep contributing to the open source world!
 
💡
Stay strong, stay positive, and never give up.
― Roy T. Bennett,The Light in the Heart
 

📎 参考文章

 
 
用高级搜索玩转GitHubFreedom, Truth, Family, Hardship, and Love