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