git误提交密码解决方案

当我们不小心提交了密码且推送到远程仓库后,这时如果只是删除密钥再提交,其他人还可以通过提交记录看到你的密码,这时有以下两个方法

  • 把多喝提交记录合并为一个,并推送到远程分支(适合对git有一定了解的,适合修改了少量文件,很在乎代码的修改是几次提交)
    • 自由的决定如何修改提交记录
    • 但可能需要解决冲突,尤其是最近几个commit提交了大量文件时会很繁琐
  • 利用 git reset --hard 强制回到提交之前的最后一个 commit , 先强制推送到远程仓库(删除提交记录),再提交最近改动(适合新手,适合修改了大量文件或不在乎提交了几次)
    • 新手最容易理解
    • 只能将最近提交合并为一次

方案一:合并多次提交记录(需要解决冲突)

查看最近的5次提交记录,并进入 vi 状态
git rebase -i HEAD~5

根据文字提示,s 代表 squash 即多次提交合并为一次提交

i 进入编辑模式,将提交密码的那次 commit 前面的 pick 改为 s (或ff 会将 commit msessage 也删掉)

注意不要修改远程分支的,否则后续会出现错误(出现后可自行搜索解决措施,挺容易搜的)

输入:wq保存退出
根据提示修改冲突

如果没有冲突就继续

将提交合并

执行 git rebase --continue

强制推送到远程分支

执行 git push -f

方案二:时空穿梭机(适合新手)

备份当前最新版本的代码

直接复制到一个文件夹即可

将版本回退到提交之前

git log 查看最近提交记录
比如发现 abcabc 这一次commit是提交密码前最后一次 commit
执行

git reset --hard abcabc
推送到远程(抹去提交记录)
git push -f
提交最新代码,推送到远程(回到最新版本)

将之前备份的代码直接覆盖当前文件夹,并执行

git add
git commit -m "xxxx"
git push
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐