GIT 修改已经PUSH到远程仓库的提交(commit)

本文介绍如何在Git中安全地处理已提交的违规修改,通过rebase操作删除早期提交中的特定目录,同时保持后续提交的完整性,并强调了合理的版本管理原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刷了很多GIT修改已经提交的commit的文章(包括commit的文件和commit的 message),试了几个没有太合适的。

背景如下:

      代码有很多次提交,已经push到远程仓库,但是中间有几个commit违反了规定,需要修改(或者删除,新增)一些提交内容。当然这个需求确实比较不太合乎情理,版本管理的目的也是为了保留提交的历史,对历史进行修改是不太合法的操作。

前提:

有远程仓库的管理权限,可以强制push(git push -f) .嗯 这个也是一个违规的操作。

1 创建模拟场景

新建仓库,clone到本地

第一个commit:(假设commitid= xx1)

             创建两个目录 a b,a下新建文件 a.txt, b下新建文件 b.txt

第二个commit    (假设commitid= xx2)

            修改 a/a.txt  

 第三个commit    (假设commitid= xx3)

          修改  b/b.txt  

第四个 commit      (假设commitid= xx4)

         同时修改  a/a.txt  b/b.txt

2 假设需要删除 第一次提交中的 整个b目录

操作步骤

  1. git rebase -i   xx1~  (波浪号 键盘组合键  shit +1,波浪号的作用是rebase 从此commitid 开始进行rebase,否则从指定commitid 的下一个commitid进行rebase)
  2. 进入vi编辑模式,修改所有相关的commit id 的命令为 edit,wq保存(vi 命令)

           3  通过操作系统命令删除 b目录 (同样 删除 修改操作均可以,但是修改要注意会不会和后面的提交有冲突)

           4 添加到暂存区 git add .

          5  提交修改 git commit --amend 

          6 git rebase --continue 继续进行rebase。 注意我们整个场景,因为后面的commit 也对b进行的修改,每次rebae continue之后都要看是否存在b 如果存在 重复 3-5的步骤,如果没有继续进行git rebase --continue

7 rebase 结束之后,命令行会有提示,git push -f 覆盖远程分支即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值