git分支,git commit,git流程
1. git分支命令规范
1. Master 主分支
2. Dev 开发分支
3. Feature 功能分支(例如:feature-x)
4. Release 预发布分支(例如:release-1.2)
5. Bug 分支(例如:fixbug-0.1)
2. git中commit规范
git add后,如果没有特性描述要添加则直接执行git commit。否则使用git commit -m <mess> 格式: <type>(<scope>):<subject> <BLANK LINE> <body> <BLANK LINE> <footer> 说明:type表示提交类别,scope表示修改范围,subject表示标题行,body表示主体描述内容。 具体: 1. type(必须,有以下选项) * feat:添加新特性 * fix:修复bug * docs:仅仅修改了文档 * style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑 * refactor: 代码重构,没有加新功能或者修复bug * perf: 优化相关,比如提升性能、体验 * test: 增加测试用例 * chore: 改变构建流程、或者增加依赖库、工具等 * revert: 回滚到上一个版本 2. scope(非必须,用于说明commit影响的范围,建议填写影响的功能模块,如果影响的不止一个scope,可以用星号*代替) 3. subject(必须,以动词开头,使用第一人称现在时。比如change,而不是changed或changes, 第一个字母小写结尾不加句号)
3. 创建版本库
1 mkdir learngit 2 cd learngit 3 pwd 4 git init (initalized empty Git repository in ...) 5 ls -ah ##(查看隐藏文件) 6 touch readme.txt 7 vim readme.txt 8 i 9 Git is a vertion system. 10 Git is free software. 11 ##(按下 Esc) 12 :wq 13 git add readme.txt 14 git commit -m "wrote a readme file" 15 vim readme.txt 16 i 17 modify 2 18 ##(按下 Esc) 19 :wq 20 git add readme.txt 21 git commit -m "append modify 2"
4. 时光机穿梭/版本回退
1 git status 2 git diff ##(查看工作区与暂存区的所有差异)(工作区即git所在的文件夹,暂存区为git add后没commit的区域) 3 git diff HEAD readme.txt ##(查看文件readme.txt工作区与暂存区的的差异) 4 git log ##(查看历史记录) 5 git log --pretty=oneline ##(查看历史记录简单显示) 6 git reset --hard HEAD^ ##(回退到上一个版本) 7 git reset --hard 1094a ##(回退到1094a这个版本) 8 git reflog ##(记录所有使用过的版本命令)
5. 撤销修改
1 git checkout -- readme.txt (撤销工作区的修改)(若没有放入暂存区则直接撤销回到版本库一模一样,若添加到暂存区则撤销到暂存区的状态) 2 git reset HEAD readme.txt (git add后没有commit,可以撤销放入暂存区状态重新放回工作区)
6. 删除文件
git add test.txt git commit -m "add test.txt" rm test.txt git status ## 选择1 git rm test.txt (从git中删除这个文件) git commit -m "remove test.txt" ## 选择2 git checkout -- test.txt (撤销误删,也就是撤销工作区删除文件的修改)
7. 绑定远程仓库
1 ssh-keygen -t rsa -C "youremail@example.com" 2 回车 回车 (会在用户目录生成一个.ssh文件夹 3 登录github,打开Account setttings,SSH Keys页面, 4 新增一个SSH key,title随便取,在key文本框里粘贴id_rsa.pub里的内容)
8. 添加远程库
1 git remote rm origin (如果之前有关联过其它的origin了就要执行这一步,没有就跳过) 2 git remote add origin https://github.com/812781386/learngit.git 3 git push -u origin master 4 git remote (查看远程库信息) 5 git remote -v (查看更详细的远程库信息)
9. 分支管理
1 git branch (查看分支) 2 git branch dev (创建dev分支) 3 git checkout dev (切换到dev分支) 4 git checkout -b dev (创建并切换到dev分支) 5 git merge dev (把dev分支合并到当前所在分支) 6 git branch -d dev (删除dev分支)
10. bug分支 (当前的编码不提交先保存起来,然后去创建新分支优先修改bug)
1 git status (发现有modified) 2 git stash (把当前工作现场储存起来) 3 git status (发现当前 工作区是干净的了) 4 git checkout master (去master上去修复bug) 5 git checkout -b issure-101 6 vim readme.txt (修改Git is free software 为 Git is a free software) 7 git add . 8 git commit -m "fix bug 101" 9 git checkout master 10 git merge --no-ff --m "merged bug fix 101" issure-101 (--no-ff --m表示不使用快速合并,并写入commit) 11 git checkout devlop 12 git stash list (查看储存) 13 git stash pop (恢复同时把stash内容删除) 14 git stash apply (恢复) 15 git stash drop (删除) 16 git stash apply stash@{0} (恢复指定的stash)
11. 多人协作
1 git push origin dev (向远程库推送dev分支,远程库没有dev分支)
12. 修改仓库名
1 git branch -m feature-user-management (feature-user-management新的仓库名)
13. 冲突
1 修改了同一个文件: 2 git pull 3 git status 4 1.git merge --abort (终止合并) 5 2.git commit -a (强行合并并提交,不要用) 6 3.git add . (强行合并并提交,也不要用) 7 4.vim readme.txt, 手动修改
14. 合并
1 git checkout -b feature1 2 vim readme.txt 3 (修改一下后保存) 4 git add reamde.txt 5 git commit -m "this is reature1" 6 git checkout master 7 vim readme.txt 8 (修改一下后保存) 9 git add readme.txt 10 git commit -m "this is master" 11 git merge feature1 12 git status 13 vim readme.txt 14 (手动修改冲突) 15 git add readme.txt 16 git commit -m "conflict fixed" 17 git log --graph --pretty=oneline --abbrev-commit (查看分支合并情况)
15. 退出
1 当使用git logs时,窗口显示滚动,按q 退出 2 git push -f (强制提交)