# 前言

规范使用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
  • scope(可选) : 用于说明commit影响的范围(如数据层、控制层、视图层等),多个的话直接用* 代替
  • subject(必须):commit目的的简短描述、不超过50个字符

初始化

git init
1

添加a.txt文件内容为a

添加到暂存区

git add a.txt 
1
  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

查看当前commit日志

git log
# or
git log --graph
1
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

删除分支

git branch -d dev
1

切换分支

git checkout dev
# 推荐使用
git switch dev
1
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

取出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

查看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

开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支

git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master
1
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

取消合并

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

Git常用命令

最后更新时间: 6/20/2022, 10:48:50 PM