我可以在存储库克隆后添加自己的注释吗?

时间:2015-09-14 20:42:24

标签: git

我刚刚意识到我忘了在我刚刚检查过的存储库中添加一个推钩,并且经历了一些令人不快的后果。我注意到我不能git添加.git/hooks/pre-push。我可以以某种方式向自己添加一条消息,一旦我克隆存储库就会显示该消息,这会提醒我添加预推脚本吗?

2 个答案:

答案 0 :(得分:0)

This question包含可能对模拟git clone hook有用的信息。

特别是通过调整post-checkout hook来创建一些隐藏文件(如果它不存在)并显示消息。在将来的检查中 - 文件存在,因此没有消息。

不要忘记将该文件添加到.gitignore

答案 1 :(得分:0)

您可以通过在git-template-directory中创建包含注释的默认 - pre-push - 脚本来实现此目的。

除其他外,template-directory包含将在每次创建$GIT_DIR时复制到新存储库的hook-templates。每当通过git initgit clone初始化本地git-repository时,都会执行此操作。

实施例

虽然git-init的文档提供了定义git-template的不同选项,但我将在此示例中创建一个自定义模板目录。

1。创建系统范围的模板目录

的副本

首先,我们递归地将默认模板目录复制到~/.git-templates/(您可以根据需要命名目录):

cp -r /Library/Developer/CommandLineTools/usr/share/git-core/templates ~/.git-templates

我正在使用Mac - 所以我在/Library/Developer/CommandLineTools/usr/share/git-core/templates找到了一个(有多个目录)origin-template-directory,Linux用户应该能够找到系统范围的模板在/usr/share/git-core/templates

2。创建一个default-pre-push hook-script

~/.git-templates/hooks中添加如下脚本,将其命名为pre-push并将其设为可执行文件:

#!/bin/sh

printf "\033[0;31m Note to myself:\033[0m don't forget to replace the pre-push-hook. :)\n"

exit 1 # this hook should always fail

3。请参阅~/.gitconfig

中的新模板目录

替换或添加init.templatedir - 选项,使其在您的新模板目录中引用:

[init]
    templatedir = ~/.git-templates/

4。测试新的default-pre-push-hook

每当你现在正在初始化或克隆git-repository时,你应该得到定义的注释。

  

由于Git的新版本,请考虑将来可能会更改origin template-dir的内容。在这种情况下,您可能需要更新模板目录的内容以消除令人讨厌的错误消息。