多次手贱使用 git reset --hard 和 git push -f 之类的命令造成损失,有什么办法可以阻止这些命令执行吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
littleMaple
V2EX    git

多次手贱使用 git reset --hard 和 git push -f 之类的命令造成损失,有什么办法可以阻止这些命令执行吗?

  •  
  •   littleMaple 2018-10-24 20:39:23 +08:00 6531 次点击
    这是一个创建于 2545 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如:逆向 git.exe ,将二进制文件里面对应相关命令的部分篡改成“不执行,直接 return ”。

    amwyyyy
        1
    amwyyyy  
       2018-10-24 20:44:37 +08:00   1
    .gitconfig 里配个 alias
    arthasgxy
        2
    arthasgxy  
       2018-10-24 20:45:50 +08:00
    扣工资
    expy
        3
    expy  
       2018-10-24 20:47:02 +08:00
    逆向开源软件,你是多想不开……
    des
        4
    des  
       2018-10-24 20:53:00 +08:00 via Android   1
    开分支保护,不允许直接推。
    另外手贱无解
    littleMaple
        5
    littleMaple  
    OP
       2018-10-24 20:55:01 +08:00
    @amwyyyy alias 的细粒度好像只能到 subcommand,不能细到 option
    littleMaple
        6
    littleMaple  
    OP   2018-10-24 20:55:48 +08:00
    @arthasgxy 还是学生,没有工资,但是会被队员吐槽。。
    littleMaple
        7
    littleMaple  
    OP
       2018-10-24 20:58:08 +08:00
    @expy 个人经验中每次试图自己编译开源项目都没有什么顺利成功的结果,但是如果用逆向的方向的话,改一下二进制文件的几个零一串就好了
    lance6716
        8
    lance6716  
       2018-10-24 21:01:32 +08:00 via Android
    这种常识… po 还是好好学习打牢基础吧
    littleMaple
        9
    littleMaple  
    OP
       2018-10-24 21:02:03 +08:00
    @des 分支保护确实是个好办法,但是还是有时候忍不住强迫症想要把 commit 历史改漂亮点 _(:3 」∠)_
    littleMaple
        10
    littleMaple  
    OP
       2018-10-24 21:03:07 +08:00
    @lance6716 不是不知道它们是危险命令,只是有时候贪图方便忍不住就直接用了 (_」∠)
    Kagari
        11
    Kagari  
       2018-10-24 21:03:39 +08:00
    找个队友,给他配一把枪
    nl101531
        12
    nl101531  
       2018-10-24 21:04:34 +08:00 via Android
    意识,输入之前先醒醒脑。
    des
        13
    des  
       2018-10-24 21:05:50 +08:00 via Android   1
    @littleMaple
    好说,开个分支专门用来整理 commit 用,然后从这个分支合过去。
    littleMaple
        14
    littleMaple  
    OP
       2018-10-24 21:07:08 +08:00
    @des 类似于 gitflow 那样嘛,确实是个好方法
    azh7138m
        15
    azh7138m  
       2018-10-24 21:09:05 +08:00 via Android   1
    整理 commit 的话用 rebase 也行
    earther01
        16
    earther01  
       2018-10-24 21:30:31 +08:00 via iPhone   1
    git 仓库加脚本,禁止 push -f
    ixiaohei
        17
    ixiaohei  
       2018-10-24 21:36:34 +08:00   1
    宣导 git revert ?另外貌似 git 远程库有的可以禁止 git push -f
    trait
        18
    trait  
       2018-10-24 21:50:12 +08:00 via iPhone   1
    多次使用也没什么吧 万事不决 reflog
    beny2mor
        19
    beny2mor  
       2018-10-24 21:50:32 +08:00
    剁手剁手
    l1fan
        20
    l1fan  
       2018-10-24 22:07:44 +08:00   1
    git reflog 可以找回来,除非你手贱到手动 git gc 30 天之内应该没问题
    cchange
        21
    cchange  
       2018-10-24 22:13:00 +08:00 via iPhone
    战略关注此帖
    carlclone
        22
    carlclone  
       2018-10-24 22:19:26 +08:00
    多次手贱了你的脑子还不够阻止你执行吗? 居然还要想办法阻止
    xor
        23
    xor  
       2018-10-24 22:23:19 +08:00 via iPhone   1
    @littleMaple
    逆向的话,改几个字节就行了,但是找到该改哪个字节则是很困难的;
    直接改源码也许要多改几个字节,但是找到它不需要吹灰之力
    xor
        24
    xor  
       2018-10-24 22:24:43 +08:00 via iPhone
    然而手贱的解决方法是剁手
    不然的话哪天自己的手把枪对准脑袋怎么办?毕竟管不了手的脑袋留着也没啥用对吧
    thedrwu
        25
    thedrwu  
       2018-10-24 22:27:45 +08:00 via Android
    reflog 里也没了?
    ShadowStar
        26
    ShadowStar  
       2018-10-24 22:36:25 +08:00   1
    远程仓库配置“ receive.denyNOnFastForwards= true ”
    scnace
        27
    scnace  
       2018-10-24 22:49:34 +08:00 via Android   1
    reflog 大法好!
    ZxBing0066
        28
    ZxBing0066  
       2018-10-24 22:52:56 +08:00
    reflog 了解下?
    ZxBing0066
        29
    ZxBing0066  
       2018-10-24 22:54:52 +08:00   1
    多说一句 手误能直接 git reset --hard 和 git push -f 还不知道 reflog 的人建议不要给 master 权限

    仓库 push 权限控制还是要控制住的
    ritaswc
        30
    ritaswc  
       2018-10-24 23:01:08 +08:00
    git reset --hard 那是你傻逼
    git push -f 那是你不懂 git,没学会用什么 git
    littleMaple
        31
    littleMaple  
    OP
       2018-10-24 23:01:47 +08:00
    @trait
    @l1fan
    @thedrwu
    @scnace
    @ZxBing0066

    之前使用 git reset --hard 发生损失的情况就是因为 work directory 有 unstaged change 的情况下使用 hard reset 将会强行将 work directory 覆盖,按理来说 unstaged change 是不在 reflog 里面的吧
    llillill
        32
    llillill  
       2018-10-24 23:27:42 +08:00
    想请教下 git push -f 没有具体合理的使用场景吗
    swulling
        33
    swulling  
       2018-10-24 23:29:15 +08:00 via iPhone   1
    第一次听到逆向开源软件的骚操作和改一个零一串的高论。
    hlwjia
        34
    hlwjia  
    PRO
       2018-10-24 23:30:58 +08:00
    把分支保护好就可以避免 force push 了呀

    @llillill 真正明白 git 流程的人就会找到合适用的场景,比如我有强迫症,我在自己的分支上就可以用,而且确保我的分支上的东西没被合并到哪里。
    scnace
        35
    scnace  
       2018-10-24 23:33:12 +08:00 via Android
    @littleMaple reset --hard 真没试过 但是应该会有
    trait
        36
    trait  
       2018-10-24 23:34:00 +08:00   1
    @littleMaple 好吧 push 什么的都是小事。可有改动至少也要 stash 一下再另行操作,直接 reset 真实
    看你这种情况应该是不知道当前目录的 git 状态,建议你在 bash 里加上显示目录 git 信息的语句,很多 shell 也自带这个功能 zsh fish 什么的
    比如 我的 bash prompt: /home [git_branch !], 这里的 !表示对文件做了改动但未提交,* 表示没和 upstream 同步
    这样你就不会硬核操作了
    trait
        37
    trait  
       2018-10-24 23:36:06 +08:00
    @llillill 有,比如 PR 和 upstream 出现冲突的时候(我很不喜欢用 merge ),rebase 到最新的 upstream/master,再 push -f
    littleMaple
        38
    littleMaple  
    OP
       2018-10-24 23:42:08 +08:00
    @swulling 确实是我想当然了,我本来以为只要在二进制文件里面找到那个节点然后添加一些表示 return 的东西就可以了,确实是很 naive 的想法
    littleMaple
        39
    littleMaple  
    OP
       2018-10-24 23:47:05 +08:00
    @xor
    @ritaswc

    大佬批评的是,我确实应该反省自己、多多学习扎实之后再实作;
    littleMaple
        40
    littleMaple  
    OP
       2018-10-24 23:52:16 +08:00
    @trait 确实是很有用的一个方法,对我来说非常新颖的一个角度;
    flowfire
        41
    flowfire  
       2018-10-25 03:44:11 +08:00 via iPhone
    @expy #3 2333333 逆向开源软件
    ddbullfrog
        42
    ddbullfrog  
       2018-10-25 03:57:16 +08:00
    git server 配置不允许 force push
    arthasgxy
        43
    arthasgxy  
       2018-10-25 11:46:41 +08:00
    真没有比损失金钱更能令人长记性的了。
    还是学生也简单,每次输入一次,请客吃饭。
    YumeMichi
        44
    YumeMichi  
       2018-10-25 14:02:21 +08:00
    我司的项目都是禁止 push -f 的 不论你 commit msg 写得再难看 push 上去就没得改了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     989 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:12 PVG 02:12 LAX 11:12 JFK 14:12
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86