首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git永久删除单个分支上的提交序列。

Git永久删除单个分支上的提交序列。
EN

Stack Overflow用户
提问于 2018-03-24 17:14:05
回答 1查看 62关注 0票数 2

我有一个私有的github,仅供少数开发人员使用,我意外地提交了一个包含密码/敏感数据的文件,并将其提交回一个名为developers的分支。

我相信没有其他开发人员做过修改,也可以为最后几次提交重写历史。开发分支尚未合并到任何其他分支。

正确的方法是如何回滚到不包含任何密码/敏感数据历史记录的特定提交,并永久删除后续提交(以便密码/敏感数据不在历史记录中)。

我有一个副本,可以轻松地处理自上次良好提交以来的代码更改复制。请注意,它大约是3提交回(每个推)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 17:31:37

一种选择是使用(交互式)重基。

  1. 结帐
  2. 启动交互式重基,例如最后3次提交:git rebase -i head~3
  3. 弹出一个文件*,这些是3提交。你可以编辑一个提交,我们完全删除它。示例: 选择ae1333333 commit1 pick ae1333442 commit2 pick ae1334477 commit3 # Rebase be 8b6221ee.170e76c22到be8b622ee (3条命令)#命令:# p,pick =使用提交# r,reword = use commit,但编辑提交消息# e,编辑= use,但停止修改# s,squash = use commit,但与以前的提交# f,fixup =类似于"squash",但丢弃此提交的日志消息# x,exec =运行命令(行的其余部分)使用shell # d,drop =删除commit #这些行可以重新排序;他们是自上而下执行的。#如果您在这里删除一行,则提交将丢失。#不过,如果删除所有内容,则重基将被中止。##注意空提交被注释掉了
  4. 保存并关闭文件。
  5. 这确实是改写历史,所以您需要用力推动:git push --force-with-lease
    • 您也可以使用git push --force,但是force-with-lease更安全。

*:或在控制台中显示内联,这取决于在git中配置的文本编辑器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49467544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档