# 快速上手
修网的知识需要在实践中不断积累，网维的wiki做为每一个网维成员经验的总结，自然也需要不断的更新，但是，wiki本身大部分时间都是由开发组的仅仅几个人来维护，难以时刻更新到最新情况，所以，我们想让网维的每个人都能加入wiki的维护，这篇文章就是写给希望为wiki添砖加瓦，却不太了解相关方法的小伙伴的，希望这篇文章能够快速让你上手wiki的维护工作。

在这篇文章里我们将教你：\
将我们在github上的主仓库fork一份，然后将fork仓库clone到你的电脑;修改网站源代码;将你的修改传回fork仓库，提交pull request

:::info 信息

在正式开始编辑前，你可以看看我们的成品网站，每篇文章的下面会有一个`Edit This Page`的链接，是这篇文章的源代码，这里是网站的链接：[Click Me  ](https://zscdev-demo.pages.dev/)


:::

## 准备
我们假设你所使用的是windows系统。

首先，我们需要安装必要的开发工具：git 和 Node.js。

访问如下链接：[git下载](https://git-scm.com/download/win) , [Node.js下载](https://nodejs.org/zh-cn/download/prebuilt-installer)。

:::info 信息

你也可以通过windows自带的WinGet包管理器下载,详见：[微软文档](https://learn.microsoft.com/zh-cn/windows/package-manager/winget/)。

:::

:::tip git是什么？

git是一个版本控制工具，他会记录一个项目从创建之初任何人对任何文件的任何改动，大大方便了多人协作工程的管理，wiki的源代码托管在基于git设计的github上。

:::

:::tip Node.js是什么?

Node.js是一个在后端运行javascript的运行时，我们使用基于这个平台设计的docusaurus框架来将wiki从一堆markdown文档变成一个网站。

:::

访问github,如果没有账号，就注册一个，然后，打开https://github.com/ZSCNetSupportDept/website。

点击上面的fork,创建仓库的一个分支，点击create fork。

进入你刚才fork的仓库，点击Code,选择HTTPS,复制下面的那一串内容。

然后，请打开你的终端,你可以在“开始”菜单栏里搜索"PowerShell"来打开。

如果你的系统没有安装PowerShell,你可以使用cmd，按`Win+R`,在弹出框里输入`cmd`打开。

输入`git clone 你复制的内容`,这将在你的当前目录下创建一个名为`website`的文件夹，并将开发组网站的全部内容复制到这个文件夹里面。


:::tip 提示

你可能会需要科学上网的手段来访问github。

:::


然后，输入`cd website`。

切换到我们的项目目录下后，运行`npm install`来安装项目的所有依赖。

:::tip 提示

为了加速下载，你可能会需要配置npm镜像，可以输入`npm config set registry https://registry.npmmirror.com`。

:::

现在，输入`npm start`，程序就会在你的电脑上构建并部署网站。

然后在你的浏览器上输入`https://localhost:3000`

如果没有出错的话，你会看到我们开发组网站的主页。

:::tip 提示

每次启动测试版网站，都需要在这里再输入一次`npm start`

:::

## 编辑
打开`website`下的`docs`文件夹，再打开`wiki`文件夹,这里就是我们的wiki内容仓库了。

仓库里的所有的文章都是以md结尾的markdown文件，你需要熟悉markdown的写法，才能对文章的内容修改和完善，markdown并不是特别复杂，你可以花一点时间去学会他。
:::info 信息

这里是一些学习markdown的资源：https://markdown.com.cn/   \
https://github.highlight.ink/mastering-markdown/intro   \
https://commonmark.org/ (英文)

:::

如果想要在文本中添加图片，视频，或者其他资源，请将这些素材放入static中，以方便管理。

对代码的修改将会自动同步到刚才打开的网页里，你可以在那里确认修改的结果满意与否，注意，你需要保存文件才会同步更改。

修改完毕后，输入`git add .`再输入`git commit`，并对你的修改做出一个简短的说明。

### 改什么？
你可以校对已有的条目，增加一些内容，或者加入一些图片之类的。

你也可以添加新条目，撰写一些你觉得有价值的修网心得。

或是帮助我们改善网站本身，比如改一改主题，写一个首页等（如果有相关能力，需要react基础）

### 文件名
你会发现，所有文件的名字前面都有一个数字，那就是文章在sidebar中出现的顺序，增添文件，请按照`order-filename.md`的格式修改名字。

在文件名前加一个下划线，系统就不会将文章加入成品网站中。

:::tip 提示

关于如何修改wiki的更多提示,可以去看docusaurus的官方文档：[链接](https://docusaurus.cn)

:::
## 推送到仓库
在修改完毕并且在本地检查完毕后，你需要将你的修改同步到你在github的远程fork仓库，然后再提交一个pull request请求主仓库合并你在fork仓库所做的修改。

首先，你需要验证你的身份，让github允许你的电脑向它提交push
:::tip 提示

你可以使用github desktop或github cli来简化这个流程，不过我们想让你在这个过程中学习SSH的用法，如果你想方便一点，直接跳到“使用github-cli”。

:::
### 选项1:使用SSH

首先，确保你安装了SSH,你可以看微软的这片文档：[链接](https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui)。

打开终端，输入

```PowerShell

ssh-keygen -t ed25519

```

然后在接下来的选项中检查密钥的存放路径，以及使用一个密码来加密这个密钥，我们建议你设置一个密码。

然后我们设置开机自动启动ssh-agent服务。

确保你使用了管理员权限运行了下面的PowerShell代码：

```PowerShell

Get-Service ssh-agent | Set-Service -StartupType Automatic

Start-Service ssh-agent

Get-Service ssh-agent

```

最后一个命令应该会返回`Running`状态。

然后，你就可以输入`ssh-add`来加载你的密钥。

```PowerShell

ssh-add 你的私钥位置

```
:::tip 提示

每次重启电脑，你都要重新输入一遍`ssh-add`。

:::

:::info 信息

关于SSH的配置，参考了这片[微软文档](https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_keymanagement)。

:::

接下来，我们配置github的SSH访问。

打开与私钥同目录下的公钥文件(以pub结尾)，然后复制他，注意要全部复制，不要多出或减少任何内容。

点一下你的github头像，选择Settings,然后在侧边栏的Access板块找到SSH and GPG keys。

点击 `New SSH key`。

把密钥粘贴到下面，然后保存就行了。

在终端里输入

```PowerShell

ssh git@github.com

```

如果返回的文本里出现了你的用户名，配置就大概成功了。

现在就可以输入`git push`了

```PowerShell

git push

```

这个命令会向远端的仓库提交你在本地提交的commit,检查你的fork仓库，有没有更新到你本地的修改？

:::info 信息

参考了github的文档:[Click Me  ](https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/about-ssh)

:::

### 选项2：使用github-cli
访问https://github.com/cli/cli/releases ， 下载最新版本。

输入`gh`以检查安装的成功状况。

没问题的话，输入`gh auth login`,会弹出一个浏览器窗口，在弹出的窗口中完成登录。

然后，你应该就可以直接使用`git push`了，输入`git push`,然后查看你在github中的fork仓库，有没有更新到你本地的修改。
:::info 信息

这里有更多关于github cli 的信息:[Click Me ](https://docs.github.com/zh/github-cli/github-cli/about-github-cli)

:::

### 提交pull request
一个pull request 是一个请求，将修改建议发送给主仓库，并让主仓库合并这些修改。

打开主仓库，选择上面的Pull Requests,然后选择New Pull Request,如果没有出现你的fork仓库，点击compare accross forks。

然后就可以Create Pull Request了。

提交后，开发组成员会校对你的修改，将你的修改应用到主仓库中，这就是我们的开发流程了。


:::info wiki的分层更新模型

按照我们的设计，wiki的内容从新到旧，一共分为三个版本：
- 最新的版本是大家在自己的电脑上运行的测试版网站，这个版本包含了最新的想法和更改，等待完善后推送到主仓库。
- 然后是我们的demo版本网站[zscdev-demo.pages.dev](zscdev-demo.pages.dev),这个版本立即反应了任何被合并进去主仓库master分支的更改，大家可以对这个网站上的内容随便提意见，任何修改都将很快被同步到网站里。
- 当主仓库和demo网站的更新积累到一定程度的数量时，开发组成员会根据一个版本作为wiki的正式版，正式推送到我们的网站[developer.zsxyww.com](developer.zsxyww.com)里，这个版本通常要比demo要落后几次更新，但是那些在施工中的文章，和还在讨论的段落等不稳定的内容将不会被同步到这里，换句话说，这个版本是“稳定版”。

这样网站的测试和正式使用的版本就分开了，保证了网站内容的严谨

:::






