首页 > 其他分享 >[转]git rebase -i修改多个commiit

[转]git rebase -i修改多个commiit

时间:2023-06-15 17:02:23浏览次数:49  
标签:git rebase 修改 commiit 提交 commit 我们

原文:https://zhuanlan.zhihu.com/p/340007149

 

有的时候我们会突然发现某个地方需要修改,最常见的某个不应该被提交的文件被提交了进来。

我们希望它不只是在后序的版本当中不再出现,而是希望整个从git仓库当中移除掉。这个时候我们就需要修改git之前的历史记录。

这个时候应该怎么办呢?

不要着急,git当中有很多的手段可以修改之前的历史提交记录。

 

修改最后一次提交

这一点我们在之前的文章当中曾经提到过,如果我们只是想要修改最后一次的提交记录,这是比较简单的。

我们只需要直接修改我们想要修改的部分,在提交的时候加上一个参数--amend即可。

git commit --amend

amend的意思是补丁,它可以把我们这一次的修改合并到上一条历史记录当中,而不会产生一个新的commit记录。

运行之后,它会打开一个vim编辑器,我们还可以修改上一次commit时输入的提示信息。

我们使用git log检查的话,会发现历史记录的修改时间还是上一次的时间。看起来就好像什么也没有发生过一样,悄无声息地就改掉了。

修改多个信息

--amend虽然好用,但是它只能修改最后一次的提交信息,如果我们想要修改的提交记录在那之前,我们应该怎么办呢?

git当中并没有提供直接的工具来实现这一点,不过我们可以使用rebase来达成。我们可以加上-i进行交互式地变基,

我们可以在任何想要的修改完成之后停止,也可以添加文件或者是做其他想要做的事情。但是我们变基的目标不是某

一个分支而是当前分支的某一个历史节点,所以我们需要提供一个具体的commitid或者是指针位置。

git rebase -i的功能非常强大,我们几乎可以使用它来完成所有一切我们想要完成的事情。

比如我们想要修改倒数第二次提交,我们可以执行git rebase -i HEAD~3。也就是以倒数第三个节点作为基准节点执行变基,

这时候git会进入一个vim窗口,在这个窗口当中我们可以看到最近的三次提交记录。

首先我们可以看到上面的三行就是我们可以修改的三个commit,分别展示的是要执行的操作以及commitid以及commit message。

这里的操作默认的是pick,也就是使用该commit。关于我们可以执行的操作git在下方也给了充分的提示,其中比较常用的有pick、edit以及squash。

这一次我们想要做的是修改提交记录,所以我们应该执行edit,我们把想要修改的commit前的pick改成edit。

比如这样:

退出之后,git会自动带我们回到我们选择edit的分支提交之后的版本。我们进行我们想要的修改,这里我在第15篇文章当中加上了一行:

尝试rebase。之后再使用git add以及git commit --amend进行修改提交结果。

再之后我们执行git rebase --continue,把剩下要应用的变更应用完成。

一切都结束之后,我们可以使用一下git show命令查看一下我们修改的bee9ce3这个commit的记录。可以看到已经多了这一行,说明我们的修改成功了。

 

 

 

 

 

----

 

标签:git,rebase,修改,commiit,提交,commit,我们
From: https://www.cnblogs.com/wutou/p/17483400.html

相关文章

  • git补充提交文件、注释 commit 后又push 到远程仓库(云端)
    注意:你查出来的远程分支名一般叫origin/XXX,命令里面的远程分支名不要带origin,千万要注意了。注意:你查出来的远程分支名一般叫origin/XXX,命令里面的远程分支名不要带origin,千万要注意了。注意:你查出来的远程分支名一般叫origin/XXX,命令里面的远程分支名不要带origin,千万要注意......
  • git commit撤销,还没有push
    还没有push时,撤销commit或add的文件 使用--soft参数,只撤销commit gitreset--softHEAD^使用 --hard 参数,连add也撤销了(修改的文件内容也被撤销了)gitreset--hardHEAD^ -参考:https://blog.csdn.net/w_p_wyd/article/details/12602......
  • git命令速查表-Git命令大全(思维导图)-图片版
    - -     ---来源:https://blog.csdn.net/m0_47403102/article/details/122538395......
  • 如何用gitbook写书
    假设你已经知道如何编写Markdown已经安装好gitbook软件目标生成一本小书,它有前言,章节1,章节2,后记。例如:简介第一章:如何造火箭1.燃料学2.空气动力学3.总装工程学第二章:如何回收火箭1.自动控制原理2.二次利用要点结束准备工作建一个写书的目录,......
  • git操作基本命令
    拉取代码gitclonehttp://...创建本地分支gitbranchfeatuer切换本地分支gitcheckoutfeatuer拉取最新分支代码gitpullorigindevgitadd.gitcommit-m"aaa"提交本地featuer代码到dev分支gitpushoriginfeatuer:dev或者创建本地分支gitbranchdev切换本地分支git......
  • git push -u origin master 与git push --set-upstream origin master
    在github上新建仓库时提示push代码的指令:gitinitgitaddREADME.mdgitcommit-m"firstcommit"gitbranch-Mmaingitremoteaddoriginhttps://github.com/helloyzp/AlgorithmProject.gitgitpush-uoriginmain以前的提示一直是gitpush--set-upstreamoriginm......
  • 郭盛华:警惕黑客通过 GitHub 存储库传播恶意软件
    据观察,至少有一半来自与欺诈性网络安全公司相关的假研究人员的GitHub账户在代码托管服务上推送恶意存储库。国际知名白帽黑客、东方联盟创始人郭盛华表示,“所有7个存储库在撰写本文时仍然可用,它们声称是针对Discord、GoogleChrome和MicrosoftExchangeServer中所谓的零日......
  • 【Git】(1)---工作区、暂存区、版本库、远程仓库
    【Git】(1)---工作区、暂存区、版本库、远程仓库 一、概念  1、四个工作区域Git本地有四个工作区域:工作目录(WorkingDirectory)、暂存区(Stage/Index)、资源库(Repository或GitDirectory)、git仓库(RemoteDirectory)。文件在这四个区域之间的转换关系如下:   ......
  • github 总是打不开jupyter notebook文件(.ipynb)怎么办?--[解决办法]
    GitHub上总是加载不出来jupyternotebook文件(.ipynb),类似下面这样......
  • 3、git warning: TLS certificate verification has been disabled
    gitwarning:TLScertificateverificationhasbeendisabled!报错warning:-----------------SECURITYWARNING----------------warning:|TLScertificateverificationhasbeendisabled!|warning:---------------------------------------------------warning......