失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > git的一些常用命令讲解和开发规范总结

git的一些常用命令讲解和开发规范总结

时间:2020-01-10 19:48:23

相关推荐

git的一些常用命令讲解和开发规范总结

一、git基本配置介绍

1. config的三个作用域

local:区域为本仓库

global: 当前用户的所有仓库

system: 本系统的所有用户

2. 添加最小配置

$ git config --global user.name 'yfy' $ git config --global user.email 'yfy@'

3. 查看配置

$ git config --local --list ##只能在仓库里面起作用, 普通路径git不管理$ git config --global --list$ git config --system --list

4. 清除设置

$ git config --unset --local user.name$ git config --unset --global user.name$ git config --unset --system user.name

二、git命令

1.git log

• git log --all 查看所有分支的历史• git log --all --graph 查看图形化的 log 地址• git log --oneline 查看单行的简洁历史。• git log --oneline -n4 查看最近的四条简洁历史。• git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。• git help --web log 跳转到git log 的帮助文档网页

我们可以设置一个别名,自定义git l查看的样式

alias.l=log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all

2.删除分支

git branch -d 分支名 #在删除前Git会判断在该分支上开发的功能是否被merge到其它分支。如果没有,不能删除。如果merge到其它分支,但之后又在其上做了开发,使用-d还是不能删除git branch -D 分支名 #会强制删除

3.撤销commit

执行commit后,还没执行push时,想要撤销这次的commit,该怎么办?

git reset --soft HEAD^

如果想要连着add也撤销的话,--soft改为--hard(删除工作空间的改动代码)。

git reset --hard HEAD^--soft不删除工作空间的改动代码 ,撤销commit,不撤销git add file--hard删除工作空间的改动代码,撤销commit且撤销add

3.修改commit的message

git commit --amend #对最新一次提交做 commit 修改git rebase -i father_commit_id #修改历史的commit,输入它的父亲节点git rebase -i --root #若没有父亲节点,则用该命令

4.合并commit

我们使用git log命令查看最近3次的提交,我们想要将最近两次请求合并成一次commit。

输入如下命令:

这里面的commitId是你要合并的两个commit后所形成的一个commitId需要跟着的commitId。在这边也就是add log 1的commitId.

git rebase -i commitId

进入vi模式后,在键盘上敲i键进入insert模式。这时候先看看这里面的东西是什么含义,

pick 的意思是要会执行这个 commit

squash 的意思是这个 commit 会被合并到前一个commit

我们需要将add log3合并到add log2中,修改成如下:

squash也可以按照上面的注释所给出的,直接使用简写s

wq保存后进入一个新页面

我们可以重新编辑该commit

提交完毕后,git log查看我们提交的日志,发现确实合并了

5.比较暂存区和HEAD的差异

vi index.html 修改index.html的内容git add index.html 将修改的文件添加到暂存区git status 显示在哪个暂存区 有没有文件改变将要提交git diff --cached 查看文件改变情况 看变更的文件有没有问题git commit -m 'Add index.html' 做提交操作

6.比较工作区和暂存区的差异

假定:HEAD、缓存区、工作区中的readme.md文件内容均不相同。git diff HEAD -- readme.md # 工作区 <===> HEADgit diff -- readme.md # 工作区 <===> 暂存区git diff --cached -- readme.md # 暂存区 <===> HEAD

7.暂存区/工作区恢复到和HEAD一样

git reset HEAD​git reset 有三个参数--soft 这个只是把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变--hard 这个是 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态--mixed 这个是不加时候的默认参数,把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变

8.工作区恢复到暂存区

我们有个文件修改了,然后add到暂存区。然后在工作区继续开发后,发现改的不是那么理想,想回到暂存区,则执行以下命令。

git restore/checkout 文件名# 上面2个是git不同版本的命令,效果都一样。我们可以用git status查看需要使用什么命令

9.查看不同提交的文件差异

git diff <commit_id1> <commit_id2> --<file_name> #比较某文件两次不同提交的差异git diff <branch_1> <branch_2> -- <file_name> #比较某文件两个不同分支的差异

10.删除文件

git rm filename #删除文件,注意,只是把工作区和暂存区对应的文件删除了,远程仓库的需要push

11.git stash

当开发中临时加塞了紧急任务怎么处理?

有时候我们会将开发中的代码先commit,然后新拉一个分支去改临时需求,改完后合并到主分支中。其它开发更新主分支的代码,然后继续开发。

那么,如果我们只是开发了一半,并不想commit呢,我们可以先将代码存放到暂存区中,当紧急任务开发完毕后,stash pop将代码恢复,继续开发。

此时若紧急任务修改的代码和目前代码冲突了,两次更改都在,手动解决冲突即可。

git stash save "save message" #把当前工作区的内容放入暂存区,只有git stash 也要可以的,但查找时不方便识别。git stash list #查看stash了哪些存储git stash pop stash@{$num} #把暂存区的内容恢复到工作区,且删除,默认为第一个stash,即stash@{0}git stash apply stash@{$num} #把暂存区的内容恢复到工作区,且保留,默认为第一个stash,即stash@{0}git stash drop stash@{$num} #丢弃stash@{$num}存储,从列表中删除这个存储git stash clear #删除所有缓存的stash

12.gitignore

我们做的每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。

/mtk/ 过滤整个文件夹*.zip 过滤所有.zip文件/mtk/do.c 过滤某个具体文件

以上规则意思是:被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传。 除了以上规则,它还可以指定要将哪些文件添加到版本管理中。

!src/ 不过滤该文件夹!*.zip 不过滤所有.zip文件!/mtk/do.c 不过滤该文件

配置语法:

以斜杠/开头表示目录;

以星号*通配多个字符;

以问号?通配单个字符

以方括号[]包含单个字符的匹配列表;

以叹号!表示不忽略(跟踪)匹配到的文件或目录;

如果提交commit后,想再忽略一些已经提交的文件,我们可以把想忽略的文件添加到 .gitignore,在使用如下命令:

git rm -- cached name_of_file #删除掉git仓库里面无需跟踪的文件。

三、git开发规范

1.分支命名

master 分支

master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性

master 分支一般由develop以及hotfix分支合并,任何时间都不能直接修改代码

develop 分支

develop 为开发分支,始终保持最新完成以及bug修复后的代码

一般开发的新功能时,feature分支都是基于develop分支下创建的

feature 分支

开发新功能时,以develop为基础创建feature分支

分支命名: feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module

release分支

release 为预上线分支,发布提测阶段,会release分支代码为基准提测

当有一组feature开发完成,首先会合并到develop分支,进入提测时,会创建release分支。 如果测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。 当测试完成之后,合并release分支到master和develop分支,此时master为最新代码,用作上线。

hotfix 分支

分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似

线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支

mit规范

当前业界应用的比较广泛的是 Angular Git Commit Guidelines

格式为:

<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>

type: 本次 commit 的类型,诸如 bugfix docs style 等

scope: 本次 commit 波及的范围

subject: 简明扼要的阐述下本次 commit 的主旨

body: 在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机,如需换行,则使用 |

footer: 描述下与之关联的 issue 或 break change,详见案例

Type的类别说明:

feat: 添加新特性

fix: 修复bug

docs: 仅仅修改了文档

style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑

refactor: 代码重构,没有加新功能或者修复bug

perf: 增加代码进行性能测试

test: 增加测试用例

chore: 改变构建流程、或者增加依赖库、工具等

如果觉得《git的一些常用命令讲解和开发规范总结》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。