# Hello World

通过这个 Hello World 练习，了解 GitHub 的拉取请求工作流。

## Introduction

本教程介绍 GitHub 存储库、分支、提交和拉取请求等基本知识。 你将创建自己的Hello World存储库并了解GitHub拉取请求工作流，这是创建和查看代码的热门方法。

在本快速入门指南中，您将：

* 创建和使用存储库。
* 启动和管理新分支。
* 对文件进行更改，并将其作为提交推送到 GitHub 。
* 打开并合并拉取请求。

### 先决条件

* 必须有一个 GitHub 帐户。

* 你不需要懂得如何编程、使用命令行，或安装 Git（GitHub 所基于的版本控制软件）。

## 第 1 步：创建存储库

首先我们需要创建一个存储库。 存储库就好比包含相关项的文件夹，例如文件、图像、视频，甚至其他文件夹。 存储库通常会将属于同一“项目”或正在处理的事务的项组合在一起。

通常，存储库包括一个 README 文件，其中具有项目的相关信息。 自述文件是用 Markdown 语言编写的，这是一种易于读取和编写的语言，用于设置纯文本格式。 可以在 [基本写作和格式语法](/zh/enterprise-server@3.18/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) 和 [管理个人资料自述文件](/zh/enterprise-server@3.18/account-and-profile/how-tos/profile-customization/managing-your-profile-readme) 中了解有关 Markdown 和 README 文件的详细信息。

GitHub 允许在创建新存储库的同时添加自述文件。
GitHub 还提供其他常见选项，例如许可证文件，但现在无需选择其中任何选项。

可在 `hello-world` 存储库中存储灵感和资源，甚至与他人进行共享和讨论。

1. 在任何页面的右上角，选择 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="Create something new" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg>，然后单击“新建存储库”。

   ![GitHub 下拉菜单的屏幕截图，其中显示了用于创建新项的选项。 菜单项“新建存储库”用深橙色框标出。](/assets/images/help/repository/repo-create-global-nav-update.png)

2. 在“存储库名称”框中，键入 `hello-world`。

3. 在“说明”框中，键入简短说明。 例如，键入“此存储库用于练习 GitHub Flow”。

4. 选择存储库是“公共”还是“专用” 。

5. 选择“添加 README 文件”。

6. 单击“创建存储库”。

## 第 2 步：创建分支

通过分支，您可以同时拥有不同版本的存储库。

默认情况下，存储库有一个名为 `main` 的分支，它被视为最终分支。 可在存储库中从 `main` 创建其他分支。

要在不更改主要代码源的情况下向项目添加新功能时，分支将非常实用。 在合并主分支之前，在不同分支上完成的工作不会显示在主分支上，我们将在本指南的后面部分介绍。 可使用分支进行试验和编辑，然后再将其提交到 `main`。

从 `main` 分支创建分支时，您正在创建 `main` 在当时的一个副本或快照。 如果其他人在你处理自己的分支时对`main`分支进行了更改，你可以合并这些更新。

此图显示：

* `main` 分支
* 名为 `feature` 的新分支
* `feature` 在合并到 `main` 之前，需要经历“提交更改”、“提交拉取请求”和“讨论建议的更改”阶段

![两个分支的关系图。 “feature”分支从“main”分支分开，然后合并回到“main”分支。](/assets/images/help/repository/branching.png)

### 创建分支

1. 单击 **代码** 选项卡查看您的 `hello-world` 存储库。

2. 在文件列表上方，点击**main**的下拉菜单。

   ![存储库页的屏幕截图。 标有分支图标和“主分支”的下拉菜单以橙色轮廓突出显示。](/assets/images/help/branches/branch-selection-dropdown-global-nav-update.png)

3. 在文本框中键入分支名称 `readme-edits`。

4. 单击“创建分支: 从 main 创建 readme-edits”。\*\*\*\*

   ![存储库的分支下拉列表的屏幕截图。 “创建分支: 从 'main' 创建 readme-edits”以深橙色突出显示。](/assets/images/help/repository/new-branch.png)

现在你有两个分支：`main` 和 `readme-edits`。 现在，它们看起来完全相同。 接下来，您需要向新的 `readme-edits` 分支添加更改。

## 第 3 步：进行和提交更改

在上一步创建新分支时，GitHub 会将你带到新 `readme-edits` 分支的代码页面，该分支是 `main` 的副本。

您可以对存储库中的文件进行更改并保存更改。 在 GitHub 中，已保存的更改称为提交。 每个提交都有一个关联的提交消息，该消息是解释为什么进行特定更改的说明。 提交消息会捕获您更改的历史记录，以便其他参与者可以了解您执行了哪些操作及其原因。

1. 在你创建的 `readme-edits` 分支下，单击 `README.md` 文件。
2. 若要编辑文件，请单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-pencil" aria-label="Edit file" role="img"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path></svg>。
3. 在编辑器中，编写一些关于您自己的内容。
4. 单击“提交更改”。
5. 在“提交更改”框中，编写描述更改的提交消息。
6. 单击“提交更改”。

这些更改将仅适用于 `readme-edits` 分支上的 README 文件，所以此分支现包含 `main` 中没有的内容。

## 第 4 步：打开一个拉取请求

现在你已在从 `main` 创建的分支中进行了更改，接下来可打开拉取请求。

拉取请求是 GitHub 上协作的核心。 打开拉取请求时，您是在提议更改，请求某人审查并接纳您的贡献，然后将其合并到他们的分支中。 拉取请求显示两个分支中内容的差异。 变化、增减以不同的颜色显示。

只要进行提交，便可打开拉取请求并开始讨论，即使在代码完成之前亦可。

在这一步中，你将在自己的存储库中打开一个拉取请求，然后自行合并。 在处理大型项目之前，这是练习 GitHub 流程的好方法。

1. 单击存储库的 **拉取请求** 选项卡。

2. 单击“新建拉取请求”。

3. 在“示例比较”框中，选择你创建的分支 \*\*\*\*，与 `readme-edits`（原始分支）进行比较。

4. 在 Compare（比较）页面上的差异中查看您的更改，确保它们是您要提交的内容。

   ![README.md 文件的差异的屏幕截图。 红色的 3 条线标出要删除的文本，绿色的 3 条线标出要添加的文本。](/assets/images/help/repository/diffs.png)

5. 单击“创建拉取请求”\*\*\*\*。

6. 为拉取请求指定一个标题，并写下更改的简要说明。 您可以包含表情符号，并且拖放图片和GIF。

7. 单击“创建拉取请求”\*\*\*\*。

### 审查合并请求

开始与他人协作时，这将是你请求他们进行评审的时间。 这样就可以在将更改合并到 `main` 分支之前，让协作者对拉取请求发表评论或提出更改建议。

我们不会在本教程中讲解如何审查拉取请求，但如果有兴趣了解更多，请查看 [拉取请求审查](/zh/enterprise-server@3.18/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews)。 或者，请尝试 [GitHub Skills](https://skills.github.com/) “查看拉取请求”课程。

## 第 5 步：合并拉取请求

在最后一步中，你将 `readme-edits` 分支合并到 `main` 分支中。 合并拉取请求后，`readme-edits` 分支上的更改将合并到 `main`。

有时，拉取请求可能会引入与 `main` 上的现有代码冲突的代码更改。 如果存在任何冲突， GitHub 则会提醒你冲突代码，并防止合并，直到冲突得到解决。 您可以进行解决冲突的提交，也可以使用拉取请求中的注释与团队成员讨论冲突。

在本演练中，应该没有任何冲突，因此您已准备好将分支合并到主分支中。

1. 在拉取请求底部，单击**合并拉取请求**以将更改合并到`main`中。
2. 单击“确认合并”。 您将收到一条消息，指出请求已成功合并且请求已关闭。
3. 单击“删除分支”。 现在你的拉取请求已合并，并且你的更改位于 `main` 上，接下来你可安全地删除 `readme-edits` 分支。 如果要对项目进行更多更改，可以随时创建新分支并重复此过程。
4. 单击返回 \*\*\*\* 存储库的“代码”`hello-world`选项卡，以在 `main` 上查看已发布的更改。

## 结束语

通过完成本教程，你已经学会了如何创建项目并在 GitHub 上发起拉取请求。

在那过程中，我们学会了如何：

* 创建存储库。
* 启动和管理新分支。
* 更改文件并将这些更改提交到 GitHub。
* 打开并合并拉取请求。

## 后续步骤

* 查看你的 GitHub 个人资料，你将看到你的工作反映在你的贡献图上。
* 如果想要再次练习本教程中学到的技能，请尝试 [GitHub Skills](https://skills.github.com/) 学习“简介 GitHub”课程。
* 个性化你的个人资料，并了解一些在 GitHub 上写作时使用的基本 Markdown 语法，请参阅 [个性化个人资料](/zh/enterprise-server@3.18/account-and-profile/tutorials/personalize-your-profile)。

## 延伸阅读

* [GitHub Flow](/zh/enterprise-server@3.18/get-started/using-github/github-flow)