参考链接:
https://education.github.com/git-cheat-sheet-education.pdf
https://www.jianshu.com/p/fc3b3bce5d8a
https://www.conventionalcommits.org/en/v1.0.0/#specification
一、Git配置
1、账号配置
git config --global user.name "[name]"
git config --global user.email "[email address]"
2、功能配置
git config --global color.ui auto
# true:提交时转换为LF,检出时转换为CRLF
# input:提交时转换为LF,检出时不转换
# false:提交检出均不转换
git config --global core.autocrlf input
# true:拒绝提交包含混合换行符的文件
# false:允许提交包含混合换行符的文件
# warn:提交包含混合换行符文件时给出警告
git config --global core.safecrlf true
3、查看配置
git config --global -l
二、初始仓库
1、本地创建
- 初始化仓库
git init
- 关联远程
git remote add origin [remote-ssh]
- 修改分支名
git branch -m [branch-name]
- 推送远程
git push origin [branch-name]
2、远程仓库
- 拉取仓库
git clone [remote-ssh] -b [branch-name] [folder-name]
三、版本控制
1、处理改变
- 添加文件
git add [file]
- 提交文件
git commit -m "Commit Message."
- 查看状态
git status
- 查看差异
git diff
git diff --staged
git diff [first-branch]...[second-branch]
- 撤销修改
git reset [file]
2、重构文件名
- 移除文件
# 从文件系统和版本控制中移除文件
git rm [file]
# 仅从版本控制中移除文件
git rm --cached [file]
- 修改文件名
git mv [file-original] [file-renamed]
3、查看历史
- 查看历史
git log
git log --follow [file]
- 查看指定提交信息
git show [commit]
4、重新提交
- 重新提交
git reset [commit]
git reset --hard [commit]
5、保存片段
- 暂存修改
# 暂存跟踪文件的所有修改
git stash
# 恢复最近保存的文件
git stash pop
- 查看暂存
git stash list
- 丢弃暂存
git stash drop
四、分支管理
1、本地分支
- 查看分支
git branch
- 创建分支
git brach [branch-name]
- 切换分支
git checkout [branch-name]
- 创建并切换分支
git checkout -b [branch-name]
- 合并分支
git merge [branch-name]
- 删除本地分支
git branch -d [branch-name]
2、远程分支
- 提交远程
git push origin [branch-name]
# 在需要时候,可以增加-f参数,强制覆盖远程分支。
git push origin [branch-name] -f
git push origin [local-name]:[origin-name] -f
- 删除远程分支
git push origin -d [branch_name]
五、分支模型
1、GitFlow
- master:主分支,用于版本发布,主分支的每个版本都是质量稳定和功能齐全的发布版。
- hotfix:问题修复,从发布版本的master分支创建,问题修复后将合并到master分支,并标记上对应的版本标签(tag)。
- develop:开发分支,用于日常开发工作,存放最新的开发版代码。达到稳定状态并可以发布版本时,代码会被合并到master分支,并标记上对应的版本标签(tag)。
- feature:功能开发,从develop分支创建,用于新功能或新模块的开发,开发完成后需要合并回develop分支。
- release:版本发布,从develop分支创建,用于准备待发布版本,在这个分支上仅对待问题进行修复及相关发布工作,完成后合并到master分支并标记上对应的版本标签(tag),同时也会合并回develop分支。
2、GitHub Flow
- master:主分支,唯一的一个长期分支,所有发布版本从该分支进行创建,进行测试发布。
- branch:开发分支,所有新功能、新模块开发及bug修改,从master创建对应的新分支,并基于新的分支进行开发、调试,完成后通过merge request合并到master分支。
3、GitLab Flow
- production:生产分支,从pre-production创建,基于众测后较稳定的版本发布稳定版本的产品,。
- pre-production:预览分支,从master分支创建,调整发布预览版本的产品,为正式产品发布做准备。
- master:主分支,包含产品所有功能代码,产品迭代增加的功能开发,bug修复都将合并到该分支。
- feature:功能开发,从master分支创建,用于已有产品的功能增加及bug修复,完成后将合并到master分支中。
- release:发布分支,与pre-production、production分支类似,基于master分支创建,release分支通常为非长期维护production分支。
六、提交规范
Git commit消息基本格式为:
<type>[optional scope]: <description>
# BLANK LINE
[optional body]
# BLANK LINE
[optional footer(s)]
1、<type>
用于说明commit的类型,通常有:
-
feat:新增功能。
-
fix:bug修复。
-
docs:文档更新。
-
style:代码风格修改。
-
refactor:重构代码。
-
build:项目构建系统的修改提交。
-
test:新增测试用例或更新测试用例。
-
perf:性能优化。
-
ci:持续集成相关修改提交。
-
chore:不属于以上类型的其他类,比如构建流程、依赖管理。
-
revert:回退到某一指定的更早的提交。
2、[optional scope]
用于说明commit影响的范围或者模块,可选。
3、<description>
该commit的简短描述,以动词开头,第一个字母大写,并且结尾不加句号”.“
4、[optional body]
对该commit的详细描述,可选。
5、[optional footer(s)]
本次commit的修改脚注,可选。通常针对重大修改使用[ BREAKING CHANGE: ]进行标记。