【问题标题】:Can I make git reset --hard safer or disable it?我可以让 git reset --hard 更安全或禁用它吗?
【发布时间】:2021-01-25 00:19:23
【问题描述】:

我养成了经常使用git reset --hard 的坏习惯。

我现在发现有git reset --keep,如果我真的需要删除一些东西,我什至可以做git stash && git stash drop

所以我想禁用硬重置,或者让他们在不可恢复地删除未提交的更改之前询问他们,或者至少创建一个备份。这可以在不将 git 包装在 shell 函数中的情况下完成吗?

【问题讨论】:

  • 我想,它是not possible 没有脚本...也许你可以使用别名来创建一个不同的命令,你更喜欢已经学过的命令????并且不要忘记,您始终可以选择 git reflog 并至少重置为某些已提交状态...
  • 是的,我对此都很熟悉,但是硬重置未暂存的更改会不可逆转地删除它们^^

标签: git git-reset


【解决方案1】:

git 本质上并不支持您的要求。

您可以编写一个名为 git 的脚本或 Bash 函数,并将其放在 git 之前的 PATH 中。脚本或函数只会检查“禁止的命令”,否则会运行常规的git 程序(例如/usr/bin/git)。

【讨论】:

  • 明确说明:Can this be done without wrapping git in a shell function??
  • @kapsiR:是的,可以通过将git 包装在脚本中来完成。如果您愿意,也可以使用 C 程序。如果问题是“git 是否从本质上支持这一点”,那么我的答案将是“不”。
  • 好的。您是对的,但最好将此添加到您的答案中。然后我会重做我的反对票?
【解决方案2】:

Git 因在执行潜在危险操作时不警告用户而臭名昭著。无论如何,对于什么构成危险,意见可能会有所不同。基本上,当您在命令行中使用 Git 时,您是在说您是高级用户并且您知道自己在做什么。没有办法让 Git 消除你的这种想法。

相反,您可以使用 GUI,例如 Sourcetree。它知道reset --hard 具有潜在危险,并发出警报,迫使您停下来认真思考自己在做什么。

【讨论】:

  • 现在我是 CLI-native,所以不幸的是,GUI 并不是一个真正的选择;)
  • 是的,但问题是“我养成了经常使用 git reset --hard 的坏习惯”,却相反。
猜你喜欢
  • 2018-01-13
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
相关资源
最近更新 更多