每次用户输入时git commit -a
,
我想要在自己的脚本中运行它,
然后运行原始命令git commit..
并让它正常运行。
答案1
您可以使用“.git/hooks”来安装“预提交”钩子,也许: http://git-scm.com/book/en/Customizing-Git-Git-Hooks
这通常是你这样做的方式。当然,如果你能准确解释一下你想要“过载”做什么,那会很有帮助。
答案2
如果你希望你的“钩子”不仅限于此,git
而且你需要让它与任何可执行文件一起工作,你可以使用alias
alias git='myhackyscript.sh'
那么myhackyscript.sh
可能看起来像
#!/bin/bash
# save params
params=("$@")
# do what i want to do
do_something
# launch git
git "${params[@]}"
myhackyscript.sh
必须存储在$PATH
类似/usr/bin/
答案3
你可以定义一个 shell 函数来调用自定义脚本,然后将内容传递给原始 git 命令:
git() {
case $1 in
commit)
echo "WUFF"
;;
esac
\git "$@"
}
将此功能放入 shell 的 RC 文件之一(例如,~/.profile
在/etc/profile
sh/bash/ksh shell 的情况下)将使其在下次登录后可用。当然,您可以获得比这更详细的信息。此外,您可能希望查看git-sh-setup(1)
和git-rev-parse(1)
手册页,特别是关于的部分parseopt
。
答案4
如果您在位于之前ls
的位置创建脚本,则会执行您的脚本。 ~/bin
path
/bin/ls
user@wopr /home/user/bin/: $ cat ls
#!/bin/bash
echo "Security Breached!"
# Run original command
/bin/ls "$@"
现在,列出文件时Security Breached!
始终会显示该消息。
user@wopr /home/user/bin/: $ ls
Security Breached!
ls file.sh file myscript.sh
user@wopr /home/user/bin/: $ which ls
/home/user/bin/ls
您应该了解您的目录path
以及谁有写入这些目录的权限。