首页   注册   登录
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 · 3578 次点击
    这是一个创建于 451 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如:逆向 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   2018-10-24 20:55:01 +08:00
    @amwyyyy alias 的细粒度好像只能到 subcommand,不能细到 option
    littleMaple
        6
    littleMaple   2018-10-24 20:55:48 +08:00
    @arthasgxy 还是学生🌚,没有工资,但是会被队员吐槽。。
    littleMaple
        7
    littleMaple   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   2018-10-24 21:02:03 +08:00
    @des 分支保护确实是个好办法,但是还是有时候忍不住强迫症想要把 commit 历史改漂亮点 _(:3 」∠❀)_
    littleMaple
        10
    littleMaple   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   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   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   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   2018-10-24 23:42:08 +08:00
    @swulling 确实是我想当然了,我本来以为只要在二进制文件里面找到那个节点然后添加一些表示 return 的东西就可以了,确实是很 naive 的想法
    littleMaple
        39
    littleMaple   2018-10-24 23:47:05 +08:00
    @xor
    @ritaswc

    大佬批评的是,我确实应该反省自己、多多学习扎实之后再实作;
    littleMaple
        40
    littleMaple   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 上去就没得改了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   997 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    ♥ Do have faith in what you're doing.