• git 详解-提升篇


    git 冷门使用

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

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


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


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

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

    修改方式

    git pull --rebase origin master
    
    • 1

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

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

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

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

    git commit --amend --author="New Name "
    
    • 1

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

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

    git rebase --continue
    
    • 1

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

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

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

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

    监测执行结果

    git filter-repo
    
    • 1

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

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

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

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

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

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

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

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

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

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

    Tips

    内容持续更新中。

    结语

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

  • 相关阅读:
    ShellBrowser Delphi,Delphi组件功能和工具
    @RestController 注解网页返回 [] ,出现的bug
    第二届黄河流域网络安全技能挑战赛Web_wirteup
    从传统到智能:数字孪生在火电厂中的应用
    机器学习基础篇(3)之图像运算和变换
    Wework创始人再创业,靠美版“自如”估值10亿美金
    php7使用openssl_encrypt函数进行AES加密
    一个.NET内置依赖注入的小型强化版
    四种自动化测试模型实例及优缺点
    如何把一行数据拆分成多条sql
  • 原文地址:https://blog.csdn.net/weixin_35723192/article/details/132667397