本文记录 Fork 仓库到创建分支、提交改动、发起 PR、再到删除分支的完整流程,防止自己忘记。
一、Fork远程仓库
1、打开原作者的仓库页面,如https://github.com/Gridea-Pro/gridea-pro-themes;
2、点击右上角Fork按钮,自动跳转到Create a new fork界面,点击Create fork按钮。
二、保持主分支干净
Fork 完成后,仓库会有一个默认分支(通常为 master 或 main),请勿在主分支上开发。
三、拉取远程仓库代码
使用 git clone 将Fork后的远程仓库clone到本地。
克隆远程远程仓库的方法有很多。
(1) 使用clone命令下载远程仓库,git clone
远程URL是Git用于指代“代码存储位置”的专业术语。该URL可以是您在GitHub上的仓库、其他用户的分支,甚至位于完全不同的服务器上。
您只能向两种类型的URL地址发送推送:
一个类似 https://github.com/user/repo.git 的 HTTPS URL
一个 SSH URL,例如 git@github.com:user/repo.git
Git会将远程URL与名称关联,默认的远程路径通常称为“origin”。
有时你会选择使用Github文件加速网站加速下载文件,这时候 git clone 就会使用例如
git clone https://gh.xmly.dev/https://github.com/stilleshan/ServerStatus
提交到远程仓库时会提示
remote: Invalid username or token. Password authentication is not supported for Git operations.
fatal: Authentication failed for ……
此时需要把远程仓库地址从加速地址改成原始地址,这条命令不会影响你的分支和提交。
git remote set-url origin <远程仓库地址>
(2) 使用初始化仓库下载远程仓库
1. 在当前目录初始化一个空的本地仓库
git init
2. 将本地仓库与远程仓库关联(origin 是默认的远程名称)
git remote add origin <远程仓库地址>
3. 在 fetch 之前,先用这个命令查看远程仓库的默认分支叫什么
git remote show origin
4. 从远程仓库下载所有数据
git fetch --all
5. 创建并切换到本地 main 分支,并让它跟踪远程的 origin/main
git checkout -b main --track origin/main
6. 手动创建一个本地分支来跟踪远程分支,并检出文件
# 创建并切换到本地 main 分支,并让它跟踪远程的 origin/main
git checkout -b main --track origin/main
如果你想获取远程仓库的所有分支,其实不需要加 –all,因为 git fetch origin 默认就会下载该远程仓库下的所有分支和提交。
如果你的远程仓库只有一个(即 origin),直接写 git fetch origin 效果完全一样。
只想 fetch 到主分支(main 或 master),直接指定分支名即可。
# 如果主分支是 main
git fetch origin main
创建并切换到本地分支跟踪远程分支完全取决于你 fetch 了哪个远程分支。如果你 fetch 了 main,就写 origin/main:
git checkout -b main --track origin/main
Git 提供了一个更智能的快捷命令,它会自动识别远程分支名,并在本地创建同名的分支。
# 无论远程是 main、master 还是 develop,Git 都会自动取相同的名字
git checkout --track origin/main # 本地自动生成 main 分支
git checkout --track origin/master # 本地自动生成 master 分支
四、新建功能/修复分支
(1) 创建一个新的分支
要创建新分支,请使用以下命令:
git branch <branch_name>
(2) 创建新分支并切换至该新分支
你可以使用以下方式创建新分支并立即切换:
git checkout -b <branch_name>
五、在分支上开发并提交
本地端需要执行的相关命令如下:
git checkout master
git pull upstream master # 同步上游
git checkout -b feat/typography
# 添加或修改文件后:
git add .
git commit -m "feat(typography): 新增typography 主题(Jinja2移植)"
git push origin feat/typography
业界通用的 git 提交规范
AngularJS 在 github上 的提交记录被业内许多人认可,逐渐被大家引用。格式:
type(scope) : subject
( 1 ) type(必须) : commit 的类别,只允许使用下面几个标识:
feat : 新功能
fix : 修复bug
docs : 文档改变
style : 代码格式改变
refactor : 某个已有功能重构
perf : 性能优化
test : 增加测试
build : 改变了build工具 如 grunt换成了 npm
revert : 撤销上一次的 commit
chore : 构建过程或辅助工具的变动
( 2 ) scope(可选) : 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
( 3 ) subject(必须) : commit 的简短描述,不超过50个字符。
commitizen 是一个撰写合格 Commit message 的工具,
遵循 Angular 的提交规范。
安装:
全局安装 commitizen
npm install -g commitizen
进入项目文件夹,运行如下命令:
commitizen init cz-conventional-changelog --save --save-exact
使用:
用 git cz 命令取代 git commit,这时会出现如下选项:
( 1 )选择 type
( 2 )填写 scope(选填)
? What is the scope of this change (e.g. component or file name)? (press enter to skip)
core
( 3 )填写 subject
? Write a short, imperative tense description of the change:
set a to b
完成,运行 git log 命令,查看我们刚才提交的 commit message,如下:
fix(core): set a to b
六、发起 Pull Request
在你的 GitHub Fork 页面上,点击黄色横幅 Compare & pull request;或进入 Pull requests > New pull request。
Base repository 选择原作者仓库,base branch 选择 master(或指定的开发分支);
Head repository 选择你的 Fork 分支 feat/typography。
填写 PR 标题和描述,建议和提交的 message 写的一样,例如:
feat(typography): 新增typography 主题(Jinja2移植)
点击 Create pull request。
七、合并后删除分支
等待维护者审核并合并后,可在 PR 页面点击 Delete branch;
或者在本地和远程执行:
git checkout master
git pull upstream master
git push origin master
git branch -d feat/typography
git push origin --delete feat/typography
参考
如何在 GitHub 上提交 PR (Pull Request)
如何在github上进行PR
git commit 代码提交规范