
有同事在一次本地 commit 里把极光推送的 secret 传上去了,然后他又 commit 一次把这个 commit 给覆盖掉,但通过gitk filename仍旧可以看到他的那次提交的 secret。
然而不幸的是,上周已经把他的分支合并到了线上分支。
我们应该如何把他带有 secret 的提交抹去?
1 blakejia Mar 16, 2018 更换 secret 更实在 |
2 ycz0926 Mar 16, 2018 via iPhone 把代码删了,重新初始化仓库 |
3 pagxir Mar 16, 2018 via Android 直接删库跑路。 |
4 leviathan0992 Mar 16, 2018 强制回滚 |
5 arclin16 Mar 16, 2018 reset 到提交 secret 之前的节点吧 然后重新 commit... |
6 scnace Mar 16, 2018 via Android rebase -i ? 还有这种 key 不是应该做成 conf 的形式吗? |
7 SergeGao Mar 16, 2018 |
8 vegito2002 Mar 16, 2018 reset 不行吗? gitk 没用过不知道难道是有什么特殊的功能; |
9 SEARCHINGFREE Mar 16, 2018 #1 +1 secret 都暴露了吧 |
10 liuzelei Mar 16, 2018 |
11 dahvlh Mar 16, 2018 reset 然后 push -f 吧 |
12 timwei Mar 16, 2018 #先记录暴露的 commit 的 hash、当前版本的 hash git log #回到旧版本 git checkout 旧版本 hash #创建回滚用分支 git checkout -b 回滚用的分支 #套用回滚版本到当前版本中间的修改 git checkout 当前版本 hash . #移除暴露的档案后 git push -f 到 repo, 记得把 repo 的 force 保护关掉 |
13 lllllllllllllll Mar 16, 2018 backup current files. git reset --hard <your commit hash> git push origin master -f use your backup overwrite current files commit and push |
14 timwei Mar 16, 2018 虽然我也觉得直接换 secret 会好点 |
15 uolcano Mar 16, 2018 via Android @scnace rebase 后其实还是能通过 reflog 看到这次操作的,不过被回滚的内容就不知道能不能再恢复回来,我还没试过恢复 |
16 wwulfric Mar 16, 2018 1. 作为分布式代码控制,你不能保证其他人电脑上没有备份 2. git rebase -i,然后在你要删除的 commit 那里把 pick 换成 drop,然后强推,至少服务器记录里可以删掉 3. 最好的方式是换 secret 吧 |
17 ZxBing0066 Mar 16, 2018 reset 后 push --force 然而已经上线了不排除已经泄露的可能,还是换 secret 实在 |
19 ex44559 Mar 16, 2018 git rebase |
20 closedevice Mar 16, 2018 @vegito2002 git 图形化客户端 |
21 liufish Mar 16, 2018 更换 secret 或者 rebase,再 push -f |
22 Raymon111111 Mar 16, 2018 git reset --hard #commit 号# 回滚到提交前一次的 commit 号, 记录就消失了... |
23 WispZhan Mar 16, 2018 没有 code review 的惨剧。 |
25 ryuzaki113 Mar 16, 2018 重新生成一下 secret |
27 otakustay Mar 16, 2018 楼上有很多做法,但前提都是服务器不留 reflog …… |
28 loading Mar 16, 2018 via iPhone 只要暴露出来,就应该改啊。 |
29 0xABCD Mar 16, 2018 via Android 如果合并到 dev 或者 master 分支就比较麻烦了,需要同时 reset feature 和 dev 分支,不然就算你 reset 了 feature 分支,你也不能 merge 到 dev 分支,它会提示你比 dev 分支旧的 |
30 rohgeo Mar 16, 2018 只抹掉服务器的仓库没用。还没有人拉取过的时候,你抹掉服务器的就可以。某则必须所有人的本地仓库也抹掉才行!如果有人已经拉取下来了,他再次提交的时候,会全部都提交回来! |
32 regiondavid Mar 16, 2018 git reset --rebase |
33 wujunze Mar 16, 2018 reset 然后 push -f |
34 lovesky Mar 16, 2018 via Android 核弹级的 git 指令 git filter-branch |
35 xiqingongzi Mar 16, 2018 |
37 flowfire Mar 17, 2018 via iPhone 其实我比较奇怪你们都不写 gitignore 的么。。。 |
41 LancerXin Mar 23, 2018 --force 神不知鬼不觉 慎用 |