在master上直接提交不是一个好习惯
对于个人项目,只有一个分支的情况下,无可厚非,随便折腾,但是当多人合作时,直接在master提交代码往往会容易参杂不同的进度的代码,容易给项目管理造成混乱。
所以我们需要一种工具,来禁止我们直接在master分支上commit代码,而合并则是可以的。
hooks
这就需要利用到git hooks工具了,在.git/hooks/pre-commit文件内,写入如下代码:
1 |
|
就能阻止你直接在master或dev上提交代码了。
插曲
当我在虚拟机上编写hooks的时候碰到了要给奇怪的问题:
1 | git/hooks/pre-commit: Syntax error: "(" unexpected (expecting "then") |
但是脚本本身确是可以执行的,后来查到应该把开头的代码编写为:
1 |
为什么呢?ll /bin目录可以看到:
1 | kevin@localhost:~$ ll /bin/sh /bin/bash |
Debain/Ubuntu 把sh命令指向了dash!!
dash是什么?
GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。
这锅应该让Ubuntu背!