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