首页 > 其他分享 >修改GIT历史记录

修改GIT历史记录

时间:2023-05-29 12:22:07浏览次数:49  
标签:历史记录 git COMMITTER feat 修改 GIT pick com

准备工作

GIT:https://git-scm.com/download/win

[可选]Idea: https://www.jetbrains.com/zh-cn/idea/

开始修改

命令行模式

打开命令行,将命令行的路径指向需要修改的项目。输入如下命令:

git rebase -r -i <commitid>^
# commitid 为需要开始修改的提交id

在自动打开的编辑器(VI)中 将 需要修改的部分的 pick 换成 edit或者e,保存文件。

label onto

reset onto
edit a919b87 feat(*): 2023.4.27
pick bf04b11 feat(*): 2023.4.27
pick 8297899 feat(*): 2023.4.27
pick 756874d feat(*): 2023.4.28
pick 85488a3 feat(*): 2023.5.10
pick fa891d8 feat(*): 2023.5.16

# Rebase 4f81358..fa891d8 onto 4f81358 (8 commands)
.git/rebase-merge/git-rebase-todo[+] [unix] (11:10 29/05/2023)  

rebase将在遇到edit的时候自动停止。此时代码会处于该提交历史的状态,此时可以同正常一样进行操作。

编辑完成后 使用

git add . 
GIT_COMMITTER_DATE="2021-05-21T12:09:28" GIT_COMMITTER_NAME="xxx" GIT_COMMITTER_EMAIL="[email protected]" git commit --amend --author "xxx<[email protected]>" --no-edit
git rebase --continue

GIT_AUTHOR_NAME is the human-readable name in the “author” field.

代码的作者名称字段

GIT_AUTHOR_EMAIL is the email for the “author” field.

代码的作者邮箱字段

GIT_AUTHOR_DATE is the timestamp used for the “author” field.

代码的作者时间字段

GIT_COMMITTER_NAME sets the human name for the “committer” field.

代码的提交者名称字段

GIT_COMMITTER_EMAIL is the email address for the “committer” field.

代码的提交者邮箱字段

GIT_COMMITTER_DATE is used for the timestamp in the “committer” field.

代码的提交者提交时间字段

最后使用 ,强行提交

git push -f

Idea模式

打开菜单下的 Git -> Rebase
勾选如下选项:
image
再出来的确认框选择 Rebase Anyway
image
将需要修改的历史的 pick 改为 edit
image
剩余步骤同命令行模式一致,只是将后续的操作转为Idea上操作

已知问题

  • 提交人和作者不一致
    git add 的时候修改 GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL 可以解决
  • Merge branch 'master' of xxxxxxxx 这个提交时间没法修改
    此问题目前无解

其他相关命令


# 设置全局
git config --global user.name "Author Name"
git config --global user.email "Author Email"

# 或者设置本地项目库配置
git config user.name "Author Name"
git config user.email "Author Email"

参考资料

https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
https://cloud.tencent.com/developer/article/1428060
https://zhuanlan.zhihu.com/p/54375755
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

标签:历史记录,git,COMMITTER,feat,修改,GIT,pick,com
From: https://www.cnblogs.com/ykbb/p/17440001.html

相关文章

  • git clean cheat sheet
    tags:[git,published]TL;DRgit默认只会非递归地删除当前目录下不被ignore匹配、且不在untracked目录中的untracked文件是否被ignore文件匹配的使用-x删除ignore文件[1]所在目录是否untracked如果是,需要使用-d删除default行为默认会删除当前目录下的......
  • git 报错;bad config in file .gitconfig
    报错如下解决办法删除.gitconfig文件,然后重启gitbash&vscode即可正常显示分支了。记得重新设置git的账号邮箱。......
  • 《HelloGitHub》第 86 期
    兴趣是最好的老师,HelloGitHub让你对编程感兴趣!简介HelloGitHub分享GitHub上有趣、入门级的开源项目。https://github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言Python、Java、Go、C/C++、Swift.........
  • 源代码管理工具介绍----Github
        源代码管理工具是软件开发中非常重要的工具,它们用于追踪、管理和协调团队成员之间的代码更改。源代码管理工具使开发团队能够跟踪代码的版本历史。这意味着你可以回顾代码的先前状态、比较不同版本之间的差异,并且能够轻松地恢复到先前的工作状态。这对于修复错误、撤销......
  • Gitlab简单使用与配置
    添加组,创建用户,创建项目 创建组:    ......
  • jenkins+gitlab 实现代码自动部署
    Jenkins设置:点击:ManageJenkins:点击:ManageCredentials点击:StoresscopedtoJenkins下的全局点击:添加凭据添加gitlab访问凭据只需要填写如下三个即可。这里填写的是gitlab的账户,不是linux系统账户,这个gitlab账户要对你所需要部署的项目有权限才可以;设置ssh账户密码:选择Mana......
  • git 项目演练:007
    接下来进行项目演练,这是一个项目提交到git一个完整过程 1.创建一个项目,如下,我创建了一个“测试项目” 2.将项目添加到git管理仓库,打开GitBash,cd到“测试项目”中 3.使用gitinit命令将项目添加,此时项目下就会多出.git文件,那就说明添加成功了  4.然后在......
  • git 文件恢复与项目还原:008
    1.【文件恢复】:将文件恢复到上一次提交的状态注意:新建且没有提交的文件无法使用文件恢复命令:gitcheckout--文件名 假如我们的一开始是这样的,这是没有报错的状态文件 然后我添加了一段内容,比如我添加这段内容项目报错了,我需要恢复到没有报错的状态方法一:代码比......
  • git常用命令介绍
    gitmergeGitmerge是一种用于将一个分支的更改合并到另一个分支的操作。示例:A---B---C[master]\D---E---F[feature-branch]在这个示例中,master分支上有三个提交(标记为A、B和C),而feature-branch分支上有三......
  • git 查看文件修改前和修改后的区别:005
    命令:girdiffgirdiff--staged 1.查看某个文件修改了哪些内容,后者是查看所有文件都修改了哪些内容(注意:这是查看未追踪的文件的)gitdiff文件名gitdifff 2.查看(已追踪但未提交)的文件修改差异gitdiff--staged ......