git
› Pro Git
› Atlassian Git Tutorial
› Pro Git 简体中文翻译
› GitX
littleMaple
V2EX  ›  git

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

  •  
  •   littleMaple · Oct 24, 2018 · 7368 views
    This topic created in 2939 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    大佬批评的是,我确实应该反省自己、多多学习扎实之后再实作;
    littleMaple
    littleMaple
    OP
    Oct 24, 2018
    40
    @trait 确实是很有用的一个方法,对我来说非常新颖的一个角度;
    flowfire
    flowfire
    Oct 25, 2018 via iPhone
    41
    @expy #3 2333333 逆向开源软件
    ddbullfrog
    ddbullfrog
    Oct 25, 2018
    42
    git server 配置不允许 force push
    arthasgxy
    arthasgxy
    Oct 25, 2018
    43
    真没有比损失金钱更能令人长记性的了。
    还是学生也简单,每次输入一次,请客吃饭。
    YumeMichi
    YumeMichi
    Oct 25, 2018
    44
    我司的项目都是禁止 push -f 的 不论你 commit msg 写得再难看 push 上去就没得改了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2020 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 15:11 · PVG 23:11 · LAX 07:11 · JFK 10:11
    ♥ Do have faith in what you're doing.