我有一个私有github仓库,只有少数开发人员使用,我不小心提交了一个包含密码/敏感数据的文件,并在一个名为develop的分支上推送了一些提交。
我相信没有其他开发人员做过更改,并且可以为最后几次提交重写历史记录。开发分支尚未合并到任何其他分支机构。
我可以回滚到不包含任何密码/敏感数据历史记录的特定提交的正确方法是什么,并永久删除后续提交(以便密码/敏感数据不在历史记录中)。
我有一个副本,可以轻松处理自上次已知良好提交以来代码更改的复制。请注意,它返回约3次(每次推送)。
答案 0 :(得分:1)
一种选择是使用(交互式)rebase。
git rebase -i head~3
弹出一个文件*,这些是3次提交。您可以编辑提交,我们完全删除它。 例如:
pick ae1333333 commit1
pick ae1333442 commit2
pick ae1334477 commit3
# Rebase be8b6221ee..170e76c22 onto be8b622ee (3 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
保存并关闭文件。
git push --force-with-lease
git push --force
,但force-with-lease
更安全。*:或在控制台中显示内联,具体取决于您在git中配置的文本编辑器。