在不使用git钩子的情况下在Git Clone之后自动运行任务

时间:2017-07-26 12:24:21

标签: git bash terminal

在终端内运行git clone ..repo..之后是否可以自动运行.bash脚本?起初我想在post-checkout hook中运行rm -rf .gitcomposer install之类的命令,但是这个文件只能在本地使用。那么还有其他选择吗?

2 个答案:

答案 0 :(得分:3)

mkdir ~/global_hooks
#create and edit the post-checkout inside
echo '#!/bin/bash' >> ~/global_hooks/post-checkout
echo 'rm -rf .git' >> ~/global_hooks/post-checkout
#...
chmod 755 ~/global_hooks/post-checkout
git config --global core.hooksPath ~/global_hooks/

任何带结帐功能的新克隆(不包含-n--mirror--bare)都会触发~/global_hooks/post-checkout.git将被删除。但这不是一个好主意,因为你必须为不同的克隆启用和禁用钩子。此外,每个用户都需要进行配置,因此有点烦人。

更糟糕的是,在没有禁用或覆盖全局钩子的情况下,存储库中的git-checkout将删除其.git。所以这只是为了好玩而根本不实用。

答案 1 :(得分:1)

所以,你想要一个repo配置,当有人克隆它时,它立即转身并删除除工作树之外的所有东西(使它不再是repo的克隆)?不,git无法做到这一点。

如果您只想自动执行这些步骤,因为您有一些常见的用例(可能是一种不寻常的部署机制?),那么您可以编写一个包装脚本来代替git clone命令运行。

但如果你真的希望由git clone命令本身触发,那就不可能了。 (它也没用;但这不关我的事。)