相关资源 Github快速入门——官方给的快速入门文档,但很多地方还没有翻译 Git速查表——当您忘记命令或不想在 CLI 中使用帮助时,此Git速查表可快速参考常用命令。
GitHub 是一个用于版本控制和协作的代码托管平台。 它允许您和其他人随时随地协同处理项目。
应用最为广泛,最适合中小项目开发。
先简单了解一下GitHub工作流
创建分支->进行更改->创建拉取请求->解决审查评论->合并拉取请求->删除分支
Create Repository 创建仓库
在任何页面的右上角,使用+下拉菜单选择“New repository”。
在“Repository name”框中,输入 hello-world
。
在“Description”框中,编写简短说明。
选择“Add a README file”。
选择存储库是“Public”还是“Private” 。
单击“Create repository”。
Branch 分支
默认情况下,存储库有一个名为 main
的分支,它被视为最终分支。 可在存储库中从 main
创建其他分支。 您可以使用分支一次拥有项目的不同版本。 当您想要在不更改主要代码源的情况下向项目添加新功能时,这非常有用。 在合并主分支之前,在不同分支上完成的工作不会显示在主分支上,我们将在本指南的后面部分介绍。 可使用分支进行试验和编辑,然后再将其提交到 main
。
从 main
分支创建分支时,创建的是 main
在当时的副本或快照。 如果其他人在你处理分支时对 main
分支进行了更改,你可拉取这些更新。
Create Branch 创建分支
单击 hello-world
存储库的“Code”选项卡
单击其中显示 main 的文件列表顶部的下拉列表。
在文本框中键入分支名称 readme-edits
。
单击“Create branch: 从 main 创建 readme-edits”。
现在有两个分支:main
和 readme-edits
。 它们看起来完全相同。 接下来向新分支添加更改。
edit & Commit changes 修改代码并提交
在上一步中创建新分支时,GitHub 会将你转到作为 main
副本的新 readme-edits
分支的代码页。
在你创建的 readme-edits
分支下,单击 README.md 文件。
单击“?”编辑文件。
在编辑器中,编写一些关于您自己的内容。
在“Commit changes”框中,编写描述更改的提交消息。
单击“Commit changes”。
这些更改将仅适用于 readme-edits
分支上的 README 文件,所以此分支现在包含 main
中没有的内容。
Pull request 拉取请求
现在已经在从 main
创建的分支中进行了更改,接下来可打开拉取请求。
单击 hello-world
存储库的“Pull Requests”选项卡。
单击“New pull request”
在“Example comparisons”框中,选择你创建的分支 readme-edits
,与 main
(原始分支)进行比较。
在 Compare页面上的差异中查看您的更改,确保它们是您要提交的内容。
单击“Create pull request”。
为拉取请求指定一个标题,并写下更改的简要说明。
(可选)在标题和说明右侧,单击“审阅者”旁边的 。 单击“代理人”、“标签”、“项目”或“里程碑”,将这些选项的任何一个添加到拉取请求 。
单击“Create pull request”。
Merge pull request 合并拉取请求
在最后一步中,你将 readme-edits
分支合并到 main
分支中。 合并拉取请求后,readme-edits
分支上的更改将合并到 main
。
有时,拉取请求可能会引入与 main
上的现有代码冲突的代码更改。 如果存在任何冲突, GitHub 将提醒您有关冲突代码的信息,并防止合并,直到冲突解决为止。 您可以进行解决冲突的提交,也可以使用拉取请求中的注释与团队成员讨论冲突。
单击“Merge pull request”,将更改合并到 main
。
单击“Confirm merge”。 您将收到一条消息,指出请求已成功合并且请求已关闭。
单击“Delete branch”。 现在你的拉取请求已合并,并且你的更改位于 main
上,接下来你可安全地删除 readme-edits
分支。
Fork 分叉
A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
简言之就是把别人的项目复制到你的仓库中,然后你可以在其基础上进行二次开发,把别人的项目作为你自己想法的起点。
或者也可以使用fork来提出与修复bug相关的更改,而不是通过logging an issue提交bug。通过如下操作:
- Fork the repository.
- 做出修复
- 向项目所有者提交Pull request
Forking a repository 分叉一个仓库
在GitHub.com,找到octocat/Spoon-Knife的Repository,在顶部右边点击Fork.
Select an owner for the forked repository.
Fork的默认命名与它们的父存储库相同。你也可以更改Fork的名称以进一步区分它。
选择性地添加您的Fork的描述。
选择是只复制默认分支还是将所有分支复制到新分支。
对于许多分叉场景,比如贡献给开源项目,你只需要复制默认的分支。
默认情况下,只复制默认的分支。
点击Create fork.
Cloning your forked repository 克隆你所分叉的仓库
现在你拥有Spoon-Knife存储库的一个分支,但在计算机本地没有该存储库中的文件。
在GitHub.com上,导航到你Fork的Spoon-Knife储存库。
在文件列表上方,单击“Code”。
复制存储库的 URL。
打开Git Bash。
将当前的工作目录更改为想要存储克隆目录的位置。
输入git clone
,然后粘贴之前复制的URL。如下所示,将YOUR-USERNAME
替换成你的GitHub用户名。
$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife
按下回车,创建本地克隆。
$ git clone https://github.com/YOUR-USERNAME/Spoon-Knife
> Cloning into `Spoon-Knife`...
> remote: Counting objects: 10, done.
> remote: Compressing objects: 100% (8/8), done.
> remote: Total 10 (delta 1), reused 10 (delta 1)
> Unpacking objects: 100% (10/10), done.
Configuring Git to sync your fork with the original repository
配置Git使你的分叉与原始存储库同步
当您分叉一个项目以便对原始存储库提出更改时,您可以配置Git将更改从原始存储库或上游存储库拉到您分叉的本地克隆中。
在GitHub.com,找到octocat/Spoon-Knife的Repository.
在文件列表上方,单击 “代码”。
复制存储库的 URL。
打开Git Bash。
将目录更改为您克隆的fork的位置。
输入git remote -v
然后按Enter键。您将看到您的fork的当前配置的远程存储库。
$ git remote -v
> origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
> origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
输入git remote add upstream
,然后粘贴步骤3中复制的URL,然后按Enter。
$ git remote add upstream https://github.com/ORIGINAL_OWNER/Spoon-Knife.git
要验证为fork指定的新上游存储库,请再次键入git remote -v
。您应该看到您的fork的URL是origin
,而原始存储库的URL是upstream
。