Skip to content

贡献指南

Keldos edited this page Mar 28, 2023 · 15 revisions

感谢您对 川虎ChatGPT 的关注!我们欢迎您为项目作出贡献!

如果您具备一定能力,您可以修改本项目的源代码,并提交一个 pull request。下面的章节将会对这一过程展开具体介绍,请您务必在贡献前完整阅读以下内容。我们假设您已经基本了解 git 和 GitHub 的工作流程。

(由于 Copilot For Pull Requests 还没正式发布,所以请务必看看这部分内容QAQ)

开始之前

在一切开始前,请您先检查 <您想要解决的问题> 或 <您想要新增的功能> 等是否在某个 issue 或 pull request 或 discussion 提被到过。如果有,请先阅读我们的反馈,并以此确定您是否该投入开发(当然,您也可以在原始会话下留言)。

如果没人提到过,您可以采用以下任意一种方式以声明您正着手解决 <您想要解决的问题> 或 您正着手开发 <您想要新增的功能> :

  • 使用 功能请求 模板提交一个 issue,勾选 我愿意协助开发! 复选框,并在 issue 中给出更多您的开发思路和信息。(当您还没尝试开发时)
  • 提交一个 draft pull request,除了写明相关 pull request 信息外,您还需要给出您的开发进度,还需要进行的工作等。(当您已经进行过更改并产生过 commit 时)

克隆项目

对于开发者,在克隆本项目之前,我们建议您先fork一份到自己的GitHub账号下,方便我们对您的贡献进行审核和合并:

  1. 打开 川虎ChatGPTGitHub页面,点击“Fork”按钮将项目fork到您的账号下。
  2. 将您账户下的fork仓库克隆到本地:
    git clone https://github.com/<your-username>/ChuanhuChatGPT.git
    cd ChuanhuChatGPT

做出贡献

  1. 创建一个新的分支,并将 HEAD 指向该分支:

    git checkout -b <new-branch-name>

    其中<new-branch-name>为新分支的名称。您可以语义化的名称,例如:fixUI、addArg等。

  2. 在该分支上进行代码修改和提交:

    具体的开发规范请参照 开发规范 章节。
    当您完成开发工作后,使用以下命令提交您的更改:

    git add <some-file>
    git commit -m "<Your commit message>"
  3. 将更改推送到GitHub:

    push之前,您应当再尝试拉取一下本项目的main分支以更新您的分支
    请最好使用 pull --rebase 命令变基您自己的分支来同步上游仓库的更新,以避免产生过多的merge信息:

    git pull https://github.com/GaiZhenbiao/ChuanhuChatGPT.git main --rebase

    然后push:

    git push

开发规范

事实上,我们没有太多的开发规范……但是还是请您尽力做到一定的规范性:

  • 在编写代码前,先大致阅读代码全文,简要理解本项目的代码风格和命名风格,再开始您的工作。
  • 在撰写 commit message 时,提供简洁而有意义的提交消息和说明,以便其他贡献者可以理解您的更改。
  • 提交消息和代码注释允许使用中文。

另外,对于本项目,还有几个需要您特别注意的点:

  • 注意不要把您的API-KEY推送到远程仓库!
    如果您发现您在commit中误提交了API-Key,可以使用 git commit --amendgit rebase 来修正您的更改。
  • 不要更改与您的更改无关的位置的任何空行、缩进或代码风格,注意不要让编辑器的格式化工具自动更改。这会使后期排查blame变得困难。

提交拉取请求

现在,您将能根据GitHub的提示,创建并提交一个拉取请求~

在提交 pull request 之前,请确保:

  1. 在提交拉取请求之前,您已经用我们的主分支中更新您的分支
  2. 您的代码不会破坏项目的现有功能
  3. 您自己进行过简单的测试,确保没有引入新的错误——至少您自己本地运行时没有发现错误。

如果您确保代码没有问题,您可以直接向我们的main分支提交一个 pull request!

拉取请求模板

我们建议使用拉取请求模板来帮助您创建高质量的拉取请求。(Copilot For Pull Requests还没出现,别急)
建议使用以下模板:

### 描述

描述您的pull request所做的更改。
另外请附上相关程序运行时截图,以直观地展现您的更改达成的效果。

### 相关问题

(如有)请列出与此拉取请求相关的issue。
或者,您可以直接描述您的工作能解决的问题等。

### 更改类型

请指明适用于此拉取请求的更改类型:

- 新功能
- 修复错误
- 代码重构
- 文档
- 其他(请您写一下具体类型,但需要符合开发人员常见的规范。)

### 补充信息

请提供任何其他信息或说明,有助于其他贡献者理解您的更改。

如果您提交的是draft pull request,也请在这里写明开发进度。例子:

#### 开发进度

- [x] 已经做好的事情1
- [ ] 还要干的事情1
- [ ] 还要干的事情2

拉取请求的合并

所有 pull request 都需要被项目管理者审核和接受才能合并到主分支中。如果您的拉取请求需要进行更改,请根据反馈信息进行修改,并持续在您的开发分支上提交。同时,我们也可能直接向您的分支进行提交并产生更改,请注意拉取更新。

您的 pull request 一般会被以 squash merge 的方式合并。这意味着,您 pull request 中的所有 commit 会被压缩成一个 commit 进入我们的 main 分支。

特殊的情况请做出说明,我们会额外考虑。

许可证

通过提交拉取请求,您同意将您的贡献授予该项目的许可证下。

贡献者们

感谢为本项目做过贡献的人~

近30天的贡献情况

Clone this wiki locally