# 前言
规范使用git commit message 说明每次提交的目的,提高开发效率
# commit message 格式
<type>(<scope>) : <subject>
1
- type(必须)
- fix/to:
- fix: 产生diff并自动批复此问题,适用于一次提交直接修复问题
- to: 只产生diff未解决问题,适用于多次提交(最后一次用fix)
- docs: 文档
- style: 格式(不影响代码运行的变动)
- refactor: 重构(不是新增功能,也不是修改bug的代码变动)
- pref:优化相关,性能提升、体验
- test: 增加测试
- revert: 回滚到上一个版本
- merge: 代码合并
- sync: 同步主线或分支的Bug
- fix/to:
- scope(可选) : 用于说明commit影响的范围(如数据层、控制层、视图层等),多个的话直接用* 代替
- subject(必须):commit目的的简短描述、不超过50个字符
初始化
git init
1
添加a.txt文件内容为a
添加到暂存区
git add a.txt
1
- 修改a.txt文件内容为b
放弃此次修改,还原暂存区的内容,但是暂存区不会删除
git restore a.txt
1
删除暂存区的内容,-f 删除暂存区的内容并删除文件
注意,只能当文件已经在暂存区中才能执行,工作区不能执行。
git rm --cache -f a.txt
1
将暂存区内容添加到本地仓库,第一次commit 会产生一个HEAD并指向master分支。 .git\refs\heads 中生成一个master文件。
git commit -m 'one'
1
# master 文件
60a8394bddea30dd770862a64fb10383efc91fff
1
2
2
查看当前commit日志
git log
# or
git log --graph
1
2
3
2
3
查看所有的历史commit信息
git reflog
1
查看所有分支
git branch
1
新建分支
# 新建分支,不切换
git branch dev
# 新建分支并切换, checkout存在歧义,checkout可以撤销修改
git checkout -b dev
# 创建并切换, 推荐使用
git switch -c newBranchName
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
删除分支
git branch -d dev
1
切换分支
git checkout dev
# 推荐使用
git switch dev
1
2
3
2
3
**未add的内容不属于任何一个分支, 未commit的内容也不属于任何一个分支,对于所有分支而言,工作区和暂存区是公共的 **
切换dev分支后添加一个b.txt
b.txt当前未commit 不属于任意一个分支,此时切换到master分支,b.txt也会存在,如果不想切换后存在使用 git stash命令
# 在执行stash前必须先将文件添加到暂存区,先执行下git add 加到git版本控制中
git add b.txt
# 保存暂存区中的内容 到 .git\refs\stash 中,一个hash值,理解为一个特别的分支
git stash
# or save跟上stash描述
git stash save 'dev:stash'
1
2
3
4
5
6
2
3
4
5
6
取出stash中的内容,并删除stash中的hash,如果只有一个那么,删除stash文件,
**注意:**在dev分支中stash, master分支中也可以查看与删除,因为工作区与暂存区是共享的。
git stash pop stash_id
# or
git stash apply stash_id
# stash_id通过git stash list 获取
# 区别
# pop会在恢复后删除指定的stash
# apply不会删除
1
2
3
4
5
6
7
2
3
4
5
6
7
查看stash记录
git stash list
1
合并master分支上的commit到dev上(流程):
首先切换到master分支
git checkout master
git log
找出要合并的commit ID :
例如
652b9a3171c3f22942e4a6024a737e04c6b4d6d4
然后切换到B分支上
git checkout B
git cherry-pick 652b9a3171c3f22942e4a6024a737e04c6b4d6d4
# 此时dev分支上会新增一个commit,来自master分支的commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master
1
2
3
4
5
2
3
4
5
当master代码改动了,需要更新开发分支(dev)上的代码
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
1
2
3
4
5
2
3
4
5
取消合并
git reset --merge 'commitID'
1
撤销commit
git reset HEAD~1 # 回退所有内容到上一个版本~2 两个版本
git reset HEAD~1 hello.php # # 回退 hello.php 文件的版本到上一个版本
git reset 052e # 回退到指定版本
1
2
3
2
3