如何删除远程 git 钩子?

Posted

技术标签:

【中文标题】如何删除远程 git 钩子?【英文标题】:How to remove remote git hooks? 【发布时间】:2019-02-05 08:43:21 【问题描述】:

我已经用 Husky 实现了 pre-push 钩子。现在我想删除它。

问题是yarn remove husky 之后,.git/hooks 内部仍然存在 git 钩子。

因为每次我想提交或切换分支或提交时都会收到此错误,因此甚至无法提交 -->

.git/hooks/pre-commit: line 6: node_modules/run-node/run-node: No such file or directory

我知道我总是可以删除.git/hooks 中的每个钩子,但是我如何远程推送这些更改?如何不强迫我的队友做同样的事情?

我也知道我可以使用-n 标志提交,但我仍然不想这样做。

【问题讨论】:

【参考方案1】:

假设你没有非沙哑的钩子,你可能想保留:

rm -f .git/hooks/*

“.git/hooks/”中的每个文件要么是 git-hook,要么被 git 忽略。通过删除内部的所有内容,您将摆脱所有挂钩,并恢复默认行为。

默认情况下,其中有示例挂钩,但除了作为示例之外,它们没有任何用途,因此您可以删除它们。

【讨论】:

我还建议在存储库中运行 git init 以重新创建默认挂钩示例。 酷。但是,如何将此更改推送到稍后我将合并到开发的远程分支?我不想强迫每个人手动删除它?可能是我这里有什么不明白的地方。 .git 文件夹中的所有内容都是纯本地的。你无法改变队友机器上的钩子。 @Nikola Mitic 你在这个文件夹中所做的一切都只发生在本地。根据您的挂钩,您可能希望在所有遥控器上重复该过程。 (但你可能会问自己,这些钩子最初是如何进入远程的,因为你不能使用工作树来更改 .git/hooks 中的文件)【参考方案2】:

我认为最好将所有 *.sample 保存在 .git/hooks 中

移除 git hooks 来的沙哑:

首先,进入 hooks 目录
cd .git/hooks
其次,保留所有 *.sample 文件并删除其他文件
ls | grep \.sample -v | xargs rm

【讨论】:

但它们没有任何实际用途,不是吗?【参考方案3】:

所以基本上移除远程 git 钩子是不可能的。

您能做的最好的事情就是删除本地的并通知团队的其他成员也这样做。

关于如何在本地删除 git hook,请查看 @wotanii answer。

【讨论】:

以上是关于如何删除远程 git 钩子?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除名为@的Git远程标签

如何查看git远程仓库中的文件

Git 如何删除本地分支和远程分支

如何在本地和远程删除 Git 分支?

如何删除所有超过一年的 Git 远程分支?

如何删除git远程分支(转)