当前位置: 首页 > news >正文

git 详解-提升篇

git 冷门使用

承接上一篇 《git 进阶篇》,简单讲解 git 冷门使用方法。
码农常规使用工具 git 偶尔也有非常规操作。例如:提交代码时同事已经更新,但又不想回退本地补丁;或者已经提交补丁需要变更提交日志信息。

作者:炭烤毛蛋 ,点击博主了解更多。


提示:更多分享内容持续更新中。

文章目录

  • git 冷门使用
  • 1. 本地代码发生修改,同步时报错
  • 2. 历史提交记录中部分信息填写错误需要修改
  • 3. 提交记录中的日志信息修改
  • Tips
  • 结语


1. 本地代码发生修改,同步时报错

git push origin master
! [rejected] master -> master (fetch first)

修改方式

git pull --rebase origin master

2. 历史提交记录中部分信息填写错误需要修改

  • 逐个修改提交记录
git rebase -i HEAD~n

将n替换为你想要修改的提交数量

依次对每个要修改的提交执行,以为替换开发者名字和邮箱为例。

git commit --amend --author="New Name <new_email@example.com>"

将New Name替换为新的姓名,new_email@example.com替换为新的邮箱地址。

每个提交修改完成后,使用以下命令继续rebase。

git rebase --continue

当rebase操作完成后 commit_id 发生改变,需要强制推送修改后的提交历史到远程仓库。

  • 批量替换需要修改信息
    如果你要批量修改已经提交的开发者名字和邮箱信息,可以使用git filter-repo工具。
    运行以下命令来安装git-filter-repo包:
pip install --user git-filter-repo
  • 编写 mailmap替换文件
    这里的mailmap是一个文本文件,用于指定旧的开发者名字和邮箱地址以及对应的新的开发者名字和邮箱地址。你需要创建一个mailmap文件,并按照以下格式填写内容:
new_name <new_email> old_name <old_email> 

每一行表示一个映射关系,将旧的名字和邮箱地址映射为新的名字和邮箱地址。

  • 启用批量修改
    遍历所有提交记录,根据mailmap文件中的映射关系,对所有的提交记录进行批量修改。
    git filter-repo --mailmap mailmap
    

监测执行结果

git filter-repo

修改完成后,同样需要强制推送修改后的提交历史到远程仓库。

也可以按照指定提交记录区间进行更替。

git filter-repo --mailmap mailmap --refs COMMIT_ID...

COMMIT_ID 提交之后记录进行修改。
请注意,这种方法会改变提交历史,可能会对其他开发者的工作造成影响。因此,在执行这些操作之前,请确保与团队中的其他开发者进行沟通,并确认他们都能够适应提交历史的更改。此外,强烈建议在修改提交历史之前,先备份你的仓库以防万一。

3. 提交记录中的日志信息修改

要修改 Git 提交记录中的日志信息,可以使用 git commit --amend 命令。

  • 查找提交补丁哈希值
git log

查看最近的提交记录,找到你想修改的提交的哈希值(commit hash)。

  • 更改提交信息
git commit --amend -m "commit info"

附加参数 -m "新的提交信息" 来修改提交的日志信息。将 “新的提交信息” 替换为你想要的新信息。
请注意:Git 会使用新的日志信息创建一个新的提交对象,并覆盖原始提交。这将改变提交的哈希值,因此如果你已经将这个提交推送到远程仓库,你可能需要在推送之前使用 git push --force 命令来强制更新远程分支。

Tips

内容持续更新中。

结语

不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋 。

http://www.lryc.cn/news/184659.html

相关文章:

  • RPA的安全风险及应对策略
  • 数据结构与算法--贪心算法
  • 【Unity3D】UGUI物体世界坐标转屏幕坐标问题
  • 代码随想录二刷day51
  • 接口自动化测试框架(pytest+allure+aiohttp+ 用例自动生成)
  • [Python入门教程]01 Python开发环境搭建
  • 第四章:最新版零基础学习 PYTHON 教程(第二节 - Python 数据类型—Python 字符串、列表、元组、迭代)
  • react框架与vue框架的区别
  • C++_pen_静态与常量
  • ToDoList使用自定义事件传值
  • 基于SSM的家庭财务管理系统设计与实现
  • OpenHarmony Trace的使用
  • 文件上传笔记
  • 计算机网络 第三章数据链路层
  • 浅析如何在抖音快速通过新手期并积累粉丝
  • 英文论文实例赏析——如何写前言?
  • springBoot -md
  • 从0开始学go第五天
  • 大厂技术面试中的手撕代码应该如何准备?
  • 阿里影业+大麦,开启大文娱新纪元?
  • springboot整合mybatis入门程序
  • 【BI看板】Superset2.0+图表二次开发初探
  • 微服务学习--1入门
  • docker系列6:docker安装redis
  • 计算机网络(三):数据链路层
  • 【计算机组成 课程笔记】7.2 DRAM和SRAM
  • 1802_在Linux系统上开发ARM单机片机嵌入式软件
  • 【计算机网络-自顶向下方法】应用层(HTTP、FTP)
  • CSS文本超出显示小数点
  • 怎么把图片压缩小一点?4个简单的压缩办法