From 5fbafc7674777deb22f640e8bbcb82ce8a1de63b Mon Sep 17 00:00:00 2001 From: shengzhang <2393584716@qq.com> Date: Sun, 16 May 2021 23:16:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=96=B0=E5=A2=9E=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E4=BB=A3=E7=A0=81=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/doc/_sidebar.md | 1 + sa-token-doc/doc/fun/git-pr.md | 102 ++++++++++++++++++++++++++ sa-token-doc/doc/static/not-jur.png | Bin 11460 -> 0 bytes sa-token-doc/doc/static/not-login.png | Bin 10601 -> 0 bytes 4 files changed, 103 insertions(+) create mode 100644 sa-token-doc/doc/fun/git-pr.md delete mode 100644 sa-token-doc/doc/static/not-jur.png delete mode 100644 sa-token-doc/doc/static/not-login.png diff --git a/sa-token-doc/doc/_sidebar.md b/sa-token-doc/doc/_sidebar.md index 3cce4b41..f2f7f373 100644 --- a/sa-token-doc/doc/_sidebar.md +++ b/sa-token-doc/doc/_sidebar.md @@ -49,6 +49,7 @@ - [Session模型详解](/fun/session-model) - [TokenInfo参数详解](/fun/token-info) - [框架源码所有技术栈](/fun/tech-stack) + - [为Sa-Token贡献代码](/fun/git-pr) diff --git a/sa-token-doc/doc/fun/git-pr.md b/sa-token-doc/doc/fun/git-pr.md new file mode 100644 index 00000000..1a9bc36b --- /dev/null +++ b/sa-token-doc/doc/fun/git-pr.md @@ -0,0 +1,102 @@ +# 如何更新在线文档 +1. 打开要修改的文档页面 +2. 滑动右侧页面滑块, 查看页面内容最下方, 评论区上方 +3. 找到这一行文字 + +![在线编辑提示](https://oss.dev33.cn/sa-token/doc/git-pr/online_1.png) + +4. 点击Gitee或GitHub按钮中的任意一个, 国内用户推荐使用 [Gitee](https://gitee.com) (请先注册登录后再往下浏览) +5. 此时会进入当前页面源码预览页面,找到下方按钮组 + +![按钮组](https://oss.dev33.cn/sa-token/doc/git-pr/online_2.png) + +6. 点击编辑按钮 +7. 此时进入待修改页面的源码页面, 按照markdown格式编辑为需要的结果(Ctrl+P可查看最终效果,再次按下可恢复源码界面) +8. 滑动到最下方点击提交审核即可 + + +# 如何提交代码 +## 环境安装过程 +1. 在本地[下载Git软件](https://pc.qq.com/detail/13/detail_22693.html)并安装 +2. 配置用户名和邮件地址(Gitee或GitHub上关联的邮箱) + +``` +git config --global user.name "这里替换为你在项目中希望展示的昵称" +git config --global user.email 这里替换为你的关联邮箱 +// 查看是否配置正确 +git config --list +``` + +3. 为了让Gitee服务器认可你的身份,需要配置一次SSH Key, 在本地生成密匙对, 公钥上传到Gitee服务器后台 +4. 具体方法见[Gitee如何配置SSH](https://gitee.com/help/articles/4181#article-header0), [Github如何配置SSH](https://docs.github.com/cn/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account) +5. 最小开发环境安装包括[Java JDK 8+](https://pc.qq.com/detail/0/detail_18360.html),[Maven 最新版](http://maven.apache.org/download.cgi) 和[idea IDE 社区版](https://www.jetbrains.com/zh-cn/idea/download/#section=windows) +6. 在idea 中[配置Java环境](https://www.baidu.com/s?wd=idea%20%E9%85%8D%E7%BD%AEjava%E7%8E%AF%E5%A2%83)和[配置maven环境](https://www.baidu.com/s?wd=idea%20%E9%85%8D%E7%BD%AEmaven%E7%8E%AF%E5%A2%83), 基础部分不再赘述 + +## 项目下载过程 +1. 点击[Gitee](https://gitee.com/dromara/sa-token)或[Github](https://github.com/dromara/sa-token)进入Sa-Token项目主页, 以下以Gitee为例,Github类似(请先注册登录后再往下浏览) +2. 找到页面右上角的按钮组, 点击Forked按钮 + +![按钮组](https://oss.dev33.cn/sa-token/doc/git-pr/code_1.png) + +3. 选择个人仓库并点击确认 +4. 此时在你的个人仓库中会多了一个Sa-Token项目 +5. 在新的Sa-Token项目中, 点击 ![克隆/下载](https://oss.dev33.cn/sa-token/doc/git-pr/code_2.png) 按钮, 点击弹出框里面的复制按钮 +6. 在本地某空文件夹下右键选择: git bash here + +![git bash](https://oss.dev33.cn/sa-token/doc/git-pr/code_4.png) + +![git bash 打开后的图](https://oss.dev33.cn/sa-token/doc/git-pr/code_3.png) + +14. 在里面输入如下命令, 按换行后自动下载整个项目 + +``` +git clone 这里替换为复制后的链接 +``` + +## 项目载入过程 +1. 下载结束后, 开启 idea, 选择 File->Open... 选中项目下载后的Sa-Token文件夹(Trust Project 相信此项目, 否则不可编辑) +2. 这时项目就是可编辑状态, 修改完代码并测试完成后即可提交 + +## 项目暂存过程 +1. 在idea中打开项目进入Commit选项 + +![本地暂存](https://oss.dev33.cn/sa-token/doc/git-pr/code_5.png) + +2. 勾选需要本地暂存的文件 +3. 在同一页面的下方输入提示信息 + +![提示信息](https://oss.dev33.cn/sa-token/doc/git-pr/code_6.png) + +4. 点击Commit按钮暂存到本地, 点击Commit and Push按钮暂存之后提交到远程 + +## 项目提交远程 +1. 除了点击Commit and Push按钮外,还有一个地方可以提交git + +![git按钮](https://oss.dev33.cn/sa-token/doc/git-pr/code_7.png) + +2. 位置在idea右上方的工具栏里面 +3. 指向左下箭头为拉取项目,可以随时更新 +4. 打对号为本地暂存 +5. 指向右上箭头提交远程 +6. 提交后进入Gitee个人仓库中的Sa-Token项目 +7. 找到下图的Pull Request按钮 + +![工具栏](https://oss.dev33.cn/sa-token/doc/git-pr/code_8.png) + +8. 点击提交, 进入如下页面 + +![提交信息填写页面](https://oss.dev33.cn/sa-token/doc/git-pr/code_9.png 's-width') + +9. 在这里,你可以选择要提交的分支,一般都是dev开发分支.可以填写合并信息,其他测试审查之类的可以不填写, 最后点击创建即可完成一次提交. + +## 远程项目更新 +1. 有时候主项目更新了,之前克隆的项目代码陈旧,如何处理? +2. 在个人仓库的Sa-Token项目主页面中, 找到下图的圆圈 + +![更新按钮](https://oss.dev33.cn/sa-token/doc/git-pr/code_10.png) + +3. 点击右侧圆圈按钮后Gitee会自动同步主项目, 这样就不用向我之前一样,删除项目又重新fork了. + +## 为什么在国内推荐Gitee +1. 近期Github下载网速较慢 +2. Gitee上中文界面方便操作 \ No newline at end of file diff --git a/sa-token-doc/doc/static/not-jur.png b/sa-token-doc/doc/static/not-jur.png deleted file mode 100644 index 6426eb0df186b5f317ed641f2263de19688651ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11460 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 E2Z0S982|tP diff --git a/sa-token-doc/doc/static/not-login.png b/sa-token-doc/doc/static/not-login.png deleted file mode 100644 index a3075b9013751179d13f629b132671db361b415e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10601 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