搜索
首页开发工具gitgit怎样修改历史记录

方法:1、用“git commit --amend”命令修改一次历史记录;2、用“git rebase -i 指定提交号”命令修改多条历史记录;3、用“git filter-branch --filer 命令 修改的范围”命令重写历史记录。

git怎样修改历史记录

本文操作环境:Windows10系统、Git2.30.0版、Dell G3电脑。

git怎样修改历史记录

初级选手 git amend

如果仅仅是在提交之后发现自己手残了,用git commit --amend就可以修改刚才的那一次提交。该命令在执行以后,会将刚刚的那一次提交从当前分支移除,把工作空间恢复到上次准备提交的状态(同时混合了上次提交之后的更改),然后显示出一个 vim 的界面让你去修改上次的提交信息。在vim 中保存后,就会把当前的所有修改一并用新的提交信息提交了。

该命令仅仅可以修改最后一次提交,一个命令相当于执行了如下一系列动作:

    $ORIG_HEAD=`git show`#保存当前的这次提交的 commit 号
    $git reset --soft HEAD^#回到最后一次提交准备提交前的状态
    $...#做一些操作和修改
    $git commit -c $ORIG_HEAD#表示用最后一次提交的提交信息来做为提交信息,不过会调出编辑器界面

中级选手 git rebase

前面的git commit --amend仅仅可以修改最后一次提交,但是当自己一时兴起,手残了一路时,这个命令就无法拯救我们了,这个时候我们就要祭出git rebase -i 这个大杀器来帮我们修改那些不堪回首的往事。

实际上,git rebase -i并不是一个专门用来修改历史记录的命令,而是一个让我们可以交互式(就是一个个来) 进行衍合操作的命令,不过我们可以用这个命令来实现对于提交历史的修改。

该命令的使用方法是git rebase -i e9441c8673a352146e070543252d2b5c,比如可以用git rebase -i HEAD~3来修改本次提交、上次提交、上上次提交共三次提交。

11.png

如图,我如果向修改这三次提交,输入git rebase -i HEAD~3,就会出现如下的界面:

12.png

这是一个 vim 编辑器的界面,这里是让我们编辑这一段脚本,可以使用的命令有下方注释中的六个命令。当退出当前编辑其的页面后,git 就会根据这个脚本一个个的针对提交执行对应的操作(从最早的那次提交开始执行)。

如果仅仅是想修改提交信息,就把所有的 pick 改成 r ,然后:wq保存,接下来 git 就会让你一个个的从最早的提交信息开始修改。

剩余的命令中, e 是会在修改对应提交时跳出 vim 编辑器,此时 HEAD 指针指向这次提交,此时可以用git commit --amend对这次提交进行各种修改,然后执行 git rebase --continue就会继续下一次操作;s 则是会在修改对应提交的时候把这次的提交和其父提交合并为一次提交;f 是和s类似但是会忽略当前提交的信息,直接采用父提交的信息;x 是需要在 x 之后输入命令然后在 HEAD 指向这次提交的时候执行。利用这些命令还可以完成重排提交、拆分提交的动作。

终极杀手 git filter-branch

假如说我们提交了 N 多次以后,突然发现我们这些提交的邮箱都写错了(╯°□°)╯︵ ┻━┻,这个时候如果使用之前提到的命令,估计还没改完就要累死了。这个时候我们就可以使用git filter-branch来重写分支,其可以批量的对每个提交执行我们预设的操作。

git filter-branch命令使用的基本使用格式是git filter-branch --4a0ece41776ebbe5ad7d58686ac8bbd5 '命令' 62ab4d8a6009528d056fcfb19b20b496 ,不同的 filter 会提供给命令不同的输入和输出。比如,--msg-filter表示修改提交信息,原提交信息从标准输入读入,新提交信息输出到标准输出;--tree-filter表示修改文件列表等等。最后会有一个重写的范围。比如,git filter-branch --env-filter 'GIT_AUTHOR_EMAIL=john@example.com export GIT_AUTHOR_EMAIL' HEAD 就可以用来重写邮箱。建议在调用命令之前先啦出一个分支做尝试再在自己要修改的分支上执行操作。

推荐学习:《Git教程

以上是git怎样修改历史记录的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
git和github:开发人员的基本工具git和github:开发人员的基本工具Apr 19, 2025 am 12:17 AM

Git和GitHub是现代开发者的必备工具。1.使用Git进行版本控制:创建分支进行并行开发,合并分支,回滚错误。2.利用GitHub进行团队协作:通过PullRequest进行代码审查,解决合并冲突。3.实用技巧和最佳实践:定期提交,清晰的提交消息,使用.gitignore,定期备份代码库。

git和github:他们的关系解释了git和github:他们的关系解释了Apr 18, 2025 am 12:03 AM

Git和GitHub不是同一个东西:Git是一个分布式版本控制系统,而GitHub是一个基于Git的在线平台。Git帮助开发者管理代码版本,通过分支、合并等功能实现协作;GitHub则提供代码托管、审查、问题管理和社交互动功能,增强了Git的协作能力。

Git下载后需要设置什么吗Git下载后需要设置什么吗Apr 17, 2025 pm 04:57 PM

安装 Git 后,为了更有效地使用,需要进行以下设置:设置用户信息(姓名和邮箱)选择文本编辑器设置外部合并工具生成 SSH 秘钥设置忽略文件模式

git下载不动怎么办git下载不动怎么办Apr 17, 2025 pm 04:54 PM

解决 Git 下载速度慢时可采取以下步骤:检查网络连接,尝试切换连接方式。优化 Git 配置:增加 POST 缓冲区大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。尝试使用不同的 Git 客户端(如 Sourcetree 或 Github Desktop)。检查防火

git为什么下载这么慢git为什么下载这么慢Apr 17, 2025 pm 04:51 PM

Git 下载慢的原因包括网络连接差、Git 服务器问题、大文件或大量提交、Git 配置问题、计算机资源不足以及其他因素,如恶意软件。解决方法包括改善网络连接、调整防火墙设置、避免下载不必要的文件或提交、优化 Git 配置、提供充足的计算机资源以及扫描并删除恶意软件。

git怎么更新本地代码git怎么更新本地代码Apr 17, 2025 pm 04:48 PM

如何更新本地 Git 代码?用 git fetch 从远程仓库拉取最新更改。用 git merge origin/<远程分支名称> 将远程变更合并到本地分支。解决因合并产生的冲突。用 git commit -m "Merge branch <远程分支名称>" 提交合并更改,应用更新。

git怎么更新代码git怎么更新代码Apr 17, 2025 pm 04:45 PM

更新 git 代码的步骤:检出代码:git clone https://github.com/username/repo.git获取最新更改:git fetch合并更改:git merge origin/master推送更改(可选):git push origin master

git怎么删除分支git怎么删除分支Apr 17, 2025 pm 04:42 PM

可以通过以下步骤删除 Git 分支:1. 删除本地分支:使用 git branch -d <branch-name> 命令;2. 删除远程分支:使用 git push <remote-name> --delete <branch-name> 命令;3. 保护分支:使用 git config branch. <branch-name>.protected true 添加保护分支设置。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境