git 系统中 post-receive 钩子不能正常执行 git pull 解决方法
来源:互联网 发布:网络平台推广合同范本 编辑:程序博客网 时间:2024/06/06 17:15
git 系统中 post-receive 钩子不能正常执行 git pull 解决方法
www.111cn.net 编辑:edit02_lz 来源:转载
今天在 git 版本控制系统中出现 post-receive 钩子不能正常执行 git pull 的操作,折腾了好久才发现是 git 的钩子在运行的时候会调用 GIT_DIR 这个环境变量,下如来记录如何解决这个问题的方法。
有一个需求是本地git在push到远程 git repo 之后,在远程服务器上自动在/dir/foo下执行 git pull 的操作。想来是一个很简单的需求,不就是在远程的 foo.git 仓库中的 hook 里加一个 post-receive 的钩子,然后在钩子里加入一个 git pull 的操作。但是实际操作的时候发现有问题的,因为这样忽略了一个小细节的问题。
操作之前,头脑里想的代码如下:
#!/bin/sh
cd /var/git/web3/etc/puppet
/usr/bin/git pull
用这个代码在 git push ssh://git@ownlinux.org:/opt/foo.git 之后,发现远程服务器上的 /dir/foo 目录下并没有成功 pull 到最新的数据,并且终端上也有报错(remote: fatal: Not a git repository: ‘.’)。 后面发现 git 的钩子在运行的时候会调用 GIT_DIR 这个环境变量,而不是PWD 这个。所以在 git pull 的时候提示 Not a git repository: ‘.’ ,其中 “.” 正是 GIT_DIR 这个环境变量的值。
钩子的代码改成下面的之后,运行正常了:
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /var/git/web3/etc/puppet
/usr/bin/git pull
- #!/bin/sh
- export LANG=zh_CN.UTF-8
- cd /www/myproject/
- unset GIT_DIR //重要是这里..
- git pull origin master
使用 git 做版本控制的朋友希望你不要和我一样忽略这个小细节的问题。
0 0
- git 系统中 post-receive 钩子不能正常执行 git pull 解决方法
- 190 git post-receive 钩子不能正常执行 git pull
- sourcetree POST git-receive-pack (chunked)解决方法
- STS 中使用git进行push或pull时报错:cannot open git-receive-pack
- [iOS ]POST git-receive-pack (chunked)
- git receive
- 解决Git项目不能Pull
- git pull 代码冲突解决方法
- Git正常pull失败,无法正常push到远程端
- GitHub 出现 POST git-receive-pack (chunked) 解决方案详解
- Source Tree提交出现 POST git-receive-pack (chunked) 解决方案
- git 钩子
- Git rebase、pull、push 出现 conflict 后不能merge的解决方法
- git pull
- git pull
- git pull
- git pull
- git pull
- 从网络下载音频资源的简便代码
- 用Flume采集多台机器上的多种日志并存储于HDFS
- Python操作sqllite3
- JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine
- 一款好用的tomcat插件---TomcatPlugin插件
- git 系统中 post-receive 钩子不能正常执行 git pull 解决方法
- CodeForces 464D World of Darkraft - 2 (概率)
- 个人学习java的一些技巧!
- 设计模式—策略模式
- 51 NOD 1315 合法整数集(思维 + 模拟)
- Maven 目录结构
- PCI9054芯片的型号说明及购买建议
- Linux内核---18.platfrome_device与platform_driver的注册过程分析
- 十分钟搞定pandas