git 修改commit信息以及提交

avatar
作者
筋斗云
阅读量:0

最近公司建立一些关于commit的检测机制,导致很多代码在远程合并的时候,提示commit内容有误,这就导致很多commit需要去修改
这里就记录,希望对大家有所帮助

1.只修改最近一条

 git commit --amend  

键入命令就可以修改了 这时候我们会进入到vim 界面
在这里插入图片描述
这里就是window系统按insert 键插入 修改 ,mac系统没有insert 就按字母 i 就可以进入到 vim的 编辑模式
在这里插入图片描述
然后开始修改内容 修改完自己 合适的commit之后呢 ,就 esc 返回 然后键入

:wq 

保存并返回即可,这样最近一条就被修改成功了

2.如果是要修改多条历史记录的情况下

首先

git log 

查看历史记录

在这里插入图片描述
比方说我们要改到这一条
这时候我们就键入命令

 git rebase -i  0ae22b7aee784931e882294cba25e7860a671131 

就进入到下一个界面了

 git rebase -i 

这个后接的就是 你要修改的commit的 下一条 commit编号
在这里插入图片描述
同样的操作 insert 插入 或者 i
这里有几种修改选择:

  1. pick:保留该 commit
  2. reword:保留该 commit,但我需要修改该commit的 Message
  3. edit:保留该 commit, 但我要停下来修改该提交(包括修改文件)
  4. squash:将该 commit 和前一个 commit 合并
  5. fixup:将该 commit 和前一个 commit 合并,但我不要保留该提交的注释信息
  6. exec:执行 shell 命令
  7. drop:丢弃这个 commit

这里有一点要注意 不要在 这里 进行 commit 内容的修改 会识别不到 匹配内容导致无法更改

按照实际需要去选择命令,我们这里需要的是 reword,用来修改 Message。
在这里插入图片描述
只去修改 你想要修改的 commit内容就好了 然后esc

:wq 

保存退出,就会逐个进入到你 刚才前面有 reword 的 commit 修改界面
在这里插入图片描述
然后逐个修改 :wq 保存就可以了

历史记录就可以提交了

假如你这里是在远程 拉下来的代码 提交到远程的时候会 提示代码冲突 因为 你本地的 commit 跟 git 仓库的 commit的记录是 不同的
如果你先 pull 再 push 这时候就本地的 commit 就会被线上的 commit记录全部覆盖 白改了
这时候就使用强制推送命令

git push --force --tags origin 当前分支名 

强制推送到远程分支并覆盖 这样了话 远程的commit也就被修改了

补充一下 commit 常见的类型 格式

提交必须以类型为前缀,该类型由动词、feat、fix 等组成,后跟冒号和空格

  1. build:影响构建系统或外部依赖项的更改(示例范围:gulp、broccoli、npm)
  2. ci:对 CI 配置文件和脚本的更改(示例范围:Travis、Circle、BrowserStack、SauceLabs)
  3. chore:不改变源代码或测试的更改,例如对构建过程、辅助工具和库的更改
  4. docs:仅文档发生变化
  5. feat:一个新功能
  6. fix: 一个错误修复
  7. perf:提高性能的代码更改
  8. refactor:既不修复错误也不添加功能的代码更改
  9. revert: 恢复某些内容
  10. style:不影响代码含义的更改(空格、格式、缺少分号等)
  11. test:添加缺失的测试或纠正现有的测试

例子

build: update npm dependency  ci: add circleci configuration file  docs: fix typo in foo.md and bar.md  perf: optimize database query for faster response times  feat: allow provided config object to extend other configs  fix: resolve issue with incorrect data rendering  refactor: reorganize code structure for better readability  style: format code according to Prettier standards  test: add unit tests for user authentication 

如果你想要更明确一点 可以指定范围

书写结构如下
范围是可选的支持多个范围

类型(范围?): 主题内容 
build(deps): upgrade packages  style(deps): remove whitespace in requirements.txt  feat(lang): add Chinese language 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!