SourceTree一大坑之提交代码提示basename和node权限被拒绝
SourceTree简介
SourceTree
是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等
操作。
Husky简介
Husky
(Github地址,21.5k颗星)是GitHook工具, 使用它可以在我们提交代码的时候可以更好的规范提交信息和代码,运行测试等,Husky支持所有的Git钩子。
如需了解更多,请访问Husky官方文档。
使用SourceTree遇到的一大坑
平常日常生活中使用SourceTree获取、提交代码都比较顺畅,但是今天在使用过程中遇到一个比较奇怪的问题,被坑了很久,将其解决思路分享出来希望能帮助到你。
在使用SourceTree提交代码的时候始终提示以下错误:
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks commit -q -F "C:\Users\[你的名字]\AppData\Local\Temp\p50mv0tg.ec0"
.git/hooks/pre-commit: line 15: /usr/bin/basename: Permission denied
.git/hooks/pre-commit: line 32: /c/Program Files/nodejs/node: Permission denied
Completed with errors, see above.
<!– more –>
解决思路
- 由于项目
使用了husky工具
,第一反应是husky引入的姿势有问题,于是各种捣鼓,发现使用乌龟可以正常提交,因此排除husky问题。 - 怀疑获取
代码路径
是否正确,代码文件夹是否有权限
,然后换不同的文件夹继续用sourcetree拉取代码,无论如何问题依然存在。 - 同样的文件夹和权限,
使用乌龟拉取和提交代码均没有问题,一切正常。
- 然后琢磨错误提示,两个地方提示均没有权限,
/usr/bin/basename: Permission denied
,找到basename.exe
位于C:\Program Files\Git\usr\bin
下,接着授予整个Git目录everyone的全部读写权限
,接着找到nodejs目录,同样授予全部读写权限
,心想授予全部权限总可以了吧,然鹅并没有好,依然是同样的错误,此时此刻已经怀疑人生了。
{% qnimg git_basename_error.png title:basename位置 alt:basename位置 ‘class:class1 class2’ %} - 继续分析,那么可能是git,nodejs,sourcetree的安装姿势有问题,
全部卸载,重新下载最新版本安装
,心想这次总该可以了吧。 - 事实证明我想多了,不过这次安装的时候有新的发现,sourcetree有内置的git,而且版本不是最新的,找到官方文档,可以通过
工具-选项-Git选项卡-Git版本选择System
{% qnimg sourcetree-git-system.png title:SourceTree选择git版本 alt:SourceTree选择git版本 ‘class:class1 class2’ %} - 重启
sourcetree
提交代码,成功了!