15 KiB
GitHub简介
本课程介绍了GitHub的基础知识,这是一个用于托管和管理代码变更的平台。
Tomomi Imura 的手绘笔记
课前测验
简介
在本课程中,我们将学习:
- 如何跟踪你在本地机器上的工作
- 如何与他人协作完成项目
- 如何为开源软件做贡献
前置条件
在开始之前,你需要检查是否安装了Git。在终端中输入:
git --version
如果未安装Git,请下载Git。然后,在终端中设置你的本地Git配置文件:
git config --global user.name "your-name"
git config --global user.email "your-email"
要检查Git是否已配置,可以输入:
git config --list
你还需要一个GitHub账户,一个代码编辑器(例如Visual Studio Code),并打开你的终端(或命令提示符)。
访问 github.com 创建一个账户(如果尚未创建),或者登录并完善你的个人资料。
✅ GitHub并不是世界上唯一的代码仓库;还有其他平台,但GitHub是最知名的。
准备工作
你需要一个本地机器(笔记本电脑或PC)上的代码项目文件夹,以及一个GitHub上的公共仓库,这将作为如何为他人项目做贡献的示例。
代码管理
假设你在本地有一个代码项目文件夹,并希望使用Git(版本控制系统)开始跟踪你的进度。有人将使用Git比作写给未来自己的情书。几天、几周或几个月后阅读你的提交信息时,你可以回忆起为什么做出某个决定,或者“回滚”某个更改——前提是你写了好的“提交信息”。
任务:创建仓库并提交代码
查看视频
-
在GitHub上创建仓库。在GitHub.com的仓库标签中,或从右上角的导航栏找到新建仓库按钮。
- 为你的仓库(文件夹)命名
- 选择创建仓库。
-
导航到你的工作文件夹。在终端中,切换到你想开始跟踪的文件夹(也称为目录)。输入:
cd [name of your folder]
-
初始化Git仓库。在你的项目中输入:
git init
-
检查状态。要检查仓库的状态,输入:
git status
输出可能如下所示:
Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: file.txt modified: file2.txt
通常,
git status
命令会告诉你哪些文件准备好被保存到仓库,或者哪些文件有更改需要持久化。 -
添加所有文件进行跟踪
这也称为暂存文件/将文件添加到暂存区。git add .
git add
加上.
参数表示将所有文件和更改添加到跟踪中。 -
添加选定文件进行跟踪
git add [file or folder name]
当你不想一次提交所有文件时,这可以帮助我们仅添加选定文件到暂存区。
-
取消暂存所有文件
git reset
此命令帮助我们一次性取消暂存所有文件。
-
取消暂存特定文件
git reset [file or folder name]
此命令帮助我们一次性取消暂存特定文件,不将其包含在下一次提交中。
-
持久化你的工作。此时你已将文件添加到所谓的暂存区,这是Git跟踪文件的地方。要使更改永久化,你需要提交文件。提交代表仓库历史中的一个保存点。输入以下命令创建提交:
git commit -m "first commit"
这会提交所有文件,并添加信息“首次提交”。对于未来的提交信息,你需要更具描述性,以传达你进行了什么类型的更改。
-
将本地Git仓库连接到GitHub。本地Git仓库在你的机器上很好,但最终你可能希望将文件备份到某个地方,并邀请其他人与你一起协作。一个很好的地方就是GitHub。记住我们已经在GitHub上创建了一个仓库,所以我们只需要将本地Git仓库连接到GitHub。
git remote add
命令可以实现这一点。输入以下命令:注意,在输入命令之前,访问你的GitHub仓库页面以找到仓库URL。你将在下面的命令中使用它。将
https://github.com/username/repository_name.git
替换为你的GitHub URL。git remote add origin https://github.com/username/repository_name.git
这会创建一个名为“origin”的远程连接,指向你之前创建的GitHub仓库。
-
将本地文件发送到GitHub。到目前为止,你已经在本地仓库和GitHub仓库之间创建了连接。使用以下命令
git push
将这些文件发送到GitHub:注意,你的分支名称可能默认不同于
main
。git push -u origin main
这会将你的“main”分支中的提交发送到GitHub。
-
添加更多更改。如果你想继续进行更改并将其推送到GitHub,你只需要使用以下三个命令:
git add . git commit -m "type your commit message here" git push
提示,你可能还想采用
.gitignore
文件,以防止你不想跟踪的文件出现在GitHub上——例如存储在同一文件夹中的笔记文件,但不适合放在公共仓库中。你可以在.gitignore模板中找到.gitignore
文件的模板。
提交信息
一个好的Git提交主题行可以完成以下句子: 如果应用此提交,它将<你的主题行>
对于主题行,请使用命令式现在时:“更改”而不是“已更改”或“正在更改”。
在正文中(可选),也使用命令式现在时。正文应包括更改的动机,并与之前的行为形成对比。你是在解释“为什么”,而不是“如何”。
✅ 花几分钟浏览GitHub。你能找到一个非常好的提交信息吗?你能找到一个非常简短的提交信息吗?你认为提交信息中最重要和最有用的信息是什么?
任务:协作
将内容放到GitHub上的主要原因是为了能够与其他开发者协作。
与他人协作项目
查看视频
在你的仓库中,导航到Insights > Community
,查看你的项目与推荐的社区标准的比较情况。
以下是一些可以改善你的GitHub仓库的事项:
- 描述。你是否为你的项目添加了描述?
- README。你是否添加了README?GitHub提供了编写README的指导。
- 贡献指南。你的项目是否有贡献指南?
- 行为准则。是否有行为准则?
- 许可证。或许最重要的是,许可证?
所有这些资源都将有助于新团队成员的入职。这些通常是新贡献者在查看你的代码之前会关注的内容,以了解你的项目是否值得他们投入时间。
✅ README文件虽然需要时间准备,但经常被忙碌的维护者忽视。你能找到一个特别详细的README示例吗?注意:有一些工具可以帮助创建好的README,你可能会想尝试一下。
任务:合并代码
贡献文档帮助人们为项目做贡献。它解释了你希望的贡献类型以及流程如何运作。贡献者需要完成一系列步骤才能为你的GitHub仓库做贡献:
- Fork你的仓库。你可能希望人们Fork你的项目。Fork意味着在他们的GitHub个人资料中创建你的仓库的副本。
- 克隆。然后他们会将项目克隆到本地机器。
- 创建分支。你会希望他们为自己的工作创建一个分支。
- 专注于一个领域的更改。要求贡献者一次专注于一个方面的贡献——这样你合并他们工作的可能性更高。想象他们修复了一个bug,添加了一个新功能,并更新了几个测试——如果你只想实现其中的2个或3个,或者1个或3个更改怎么办?
✅ 想象一个分支在编写和发布优质代码时特别重要的情况。你能想到哪些用例?
注意,成为你希望看到的改变,并为自己的工作创建分支。你进行的任何提交都将在你当前“检出”的分支上进行。使用
git status
查看当前分支。
让我们来看看贡献者的工作流程。假设贡献者已经Fork并克隆了仓库,因此他们在本地机器上有一个准备工作的Git仓库:
-
创建分支。使用
git branch
命令创建一个分支,包含他们打算贡献的更改:git branch [branch-name]
-
切换到工作分支。使用
git switch
切换到指定分支并更新工作目录:git switch [branch-name]
-
进行工作。此时你可以添加更改。别忘了用以下命令告诉Git:
git add . git commit -m "my changes"
确保为你的提交起一个好名字,对你自己和你帮助的仓库维护者来说都很重要。
-
将工作与
main
分支合并。完成工作后,你希望将你的工作与main
分支的工作合并。main
分支可能已经发生了变化,因此请确保首先使用以下命令更新到最新版本:git switch main git pull
此时你需要确保任何冲突(Git无法轻松合并的情况)发生在你的工作分支中。因此运行以下命令:
git switch [branch_name] git merge main
这会将
main
中的所有更改带入你的分支,希望你可以继续。如果不能,VS Code会告诉你Git“困惑”的地方,你只需修改受影响的文件以确定哪个内容最准确。 -
将工作发送到GitHub。将工作发送到GitHub意味着两件事:将分支推送到你的仓库,然后打开一个PR(Pull Request)。
git push --set-upstream origin [branch-name]
上述命令会在你的Fork仓库中创建分支。
-
打开PR。接下来,你需要打开一个PR。通过导航到GitHub上的Fork仓库,你会看到GitHub提示是否要创建一个新的PR,点击它,你会进入一个界面,可以更改提交信息标题,给出更合适的描述。现在你Fork的仓库的维护者会看到这个PR,希望他们会欣赏并合并你的PR。你现在是一名贡献者,太棒了 :)
-
清理。成功合并PR后,清理工作被认为是良好的实践。你需要清理本地分支和推送到GitHub的分支。首先使用以下命令在本地删除分支:
git branch -d [branch-name]
确保接下来访问Fork仓库的GitHub页面并删除你刚刚推送到的远程分支。
Pull request
似乎是一个有点奇怪的术语,因为实际上你是想将你的更改推送到项目中。但项目维护者(项目所有者)或核心团队需要在将你的更改合并到项目的“主”分支之前进行审查,因此你实际上是在请求维护者对更改做出决定。
Pull request
是一个比较和讨论分支中引入的差异的地方,可以进行审查、评论、集成测试等操作。一个好的 pull request
遵循与提交信息大致相同的规则。例如,当你的工作解决了某个问题时,可以在问题跟踪器中添加对该问题的引用。这可以通过使用 #
后跟问题编号来完成,例如 #97
。
🤞希望所有检查都通过,项目所有者将你的更改合并到项目中🤞
更新你当前的本地工作分支,使其包含 GitHub 上对应远程分支的所有新提交:
git pull
如何为开源项目做贡献
首先,找到一个你感兴趣并希望贡献更改的 GitHub 仓库(或 repo)。你需要将其内容复制到你的电脑上。
✅ 找到“适合初学者”的仓库的一个好方法是通过标签 'good-first-issue' 进行搜索。
有几种复制代码的方法,其中一种是使用 HTTPS、SSH 或 GitHub CLI(命令行界面)“克隆”仓库的内容。
打开你的终端并像这样克隆仓库:
git clone https://github.com/ProjectURL
要开始处理项目,请切换到正确的文件夹:
cd ProjectURL
你也可以使用 Codespaces(GitHub 的嵌入式代码编辑器/云开发环境)或 GitHub Desktop 打开整个项目。
最后,你可以下载代码的压缩文件夹。
关于 GitHub 的一些有趣的事情
你可以对 GitHub 上的任何公共仓库进行加星、关注和“fork”。你可以在右上角的下拉菜单中找到你加星的仓库。这就像为代码做书签。
项目通常有一个问题跟踪器,大多数情况下在 GitHub 的“Issues”标签中,除非另有说明,人们会在这里讨论与项目相关的问题。而在 Pull Requests 标签中,人们会讨论和审查正在进行的更改。
项目可能还会在论坛、邮件列表或聊天频道(如 Slack、Discord 或 IRC)中进行讨论。
✅ 浏览一下你的新 GitHub 仓库,尝试一些操作,比如编辑设置、向仓库添加信息以及创建项目(例如看板)。你可以做很多事情!
🚀 挑战
与朋友合作处理彼此的代码。协作创建一个项目,fork 代码,创建分支并合并更改。
课后测验
复习与自学
阅读更多关于如何为开源软件做贡献的内容。
多练习,多实践。GitHub 提供了很棒的学习路径:skills.github.com:
你还可以找到更高级的课程。
作业
完成 GitHub 的第一周课程。
免责声明:
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而引起的任何误解或误读,我们概不负责。