zoukankan      html  css  js  c++  java
  • Git 实战手册(一): 批量修改log中的提交信息

    本文须知

    背景介绍

    事情的起源是这样的:迷恋的谷歌的我最近申请了一个新的 google 邮箱。然后果断在 github 上更新了邮箱地址,并且删除了之前的 163 等国内邮箱。

    回到 github 首页,我发现之前的项目提交记录都没了。到底什么情况(O_o)??

    看一张灾难现场图:

    1

    仔细查找了相关资料,发现了是因为之前的提交记录中Author字段的信息是 163 等国内邮箱的。如下:

    2

    所以,解决方法就是:更改log中的提交信息

    简单尝试:

    通过百度,发现通过如下命令可以修改:

    git commit --amend --author='名称 <邮箱>'
    

    但是,这只能修改最近一条。如何批量修改 log 信息呢?

    解决方法

    通过 google,发现stackoverflow上早有人提问,请移步墙外
    同时,Github官方也提供了脚本,虽然仓库没了,但是复制脚本,然后执行即可,移步这里

    首先,我们创建change.sh脚本,并根据个人信息复制以下脚本

    #!/bin/sh
    
    git filter-branch --env-filter '
    OLD_EMAIL="填写原来的邮箱"
    CORRECT_NAME="填写现在的名称"
    CORRECT_EMAIL="填写现在的邮箱"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    

    将脚本移入要修改的git仓库,并执行脚本。修改后的 log 信息如下。

    3

    通过git push --force强行推送修改后的 log 信息。

    哈哈,我的 github又重新绿了起来。

  • 相关阅读:
    bzoj1036 [ZJOI2008]树的统计Count(树链剖分)
    poj2348 Euclid's Game
    bzoj3575 [Hnoi2014]道路堵塞
    poj2484 A Funny Game
    bzoj2286 [Sdoi2011]消耗战
    虚树学习笔记
    bzoj4518 [Sdoi2016]征途
    node.js开发环境配置
    js中阻止事件冒泡和浏览器默认行为
    css3 background-clip和background-origin 区别
  • 原文地址:https://www.cnblogs.com/geyouneihan/p/9600721.html
Copyright © 2011-2022 走看看