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

本文介绍了Git的基础配置,包括本地、全局和系统级别的配置,以及常用命令如gitlog、分支管理、commit操作、合并与差异对比。还涵盖了Git开发规范,如分支命名规则和commit消息格式,以及Git stash、ignore和版本控制的最佳实践。
摘要由CSDN通过智能技术生成

一、git基本配置介绍

1. config的三个作用域

  • local:区域为本仓库

  • global: 当前用户的所有仓库

  • system: 本系统的所有用户

2. 添加最小配置

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

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 # 工作区 <===> HEAD
git 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分支

2.commit规范

当前业界应用的比较广泛的是 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: 改变构建流程、或者增加依赖库、工具等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值