如何在Git变基时让指定文件的历史修改从未发生?
解决方法:通过交互式rebase抹去指定提交对文件的修改
启动交互式rebase,定位到目标提交的父提交
要修改的是2个提交前的那次提交,执行命令:git rebase -i HEAD~3注:
HEAD~3指向该提交的父提交,确保目标提交出现在待编辑的提交列表中。标记目标提交为可编辑
在弹出的文本编辑器里,找到修改过fruits.txt的那行提交,把开头的pick替换成edit,保存并退出编辑器。撤销目标提交对文件的修改
此时Git会停留在目标提交的状态,执行以下命令将fruits.txt恢复到该提交修改前的内容:git restore --source=HEAD^ fruits.txt(
HEAD^代表目标提交的父提交,也就是文件未被修改时的状态)更新目标提交
用当前状态覆盖原提交,保留原提交的提交信息:git commit --amend --no-edit完成rebase流程
继续执行剩余的rebase步骤:git rebase --continue
操作完成后,那个2个提交前的提交就会被修改为从未操作过fruits.txt,后续提交会基于修改后的提交重新应用,整个提交历史里不会出现还原提交或删除文件的记录,完全达到“仿佛那次修改从未发生”的效果。
内容的提问来源于stack exchange,提问作者Spring E. Thing
相关产品推荐
相关产品推荐

