git 系统中 post-receive 钩子不能正常执行 git pull 解决方法

简介: git 系统中 post-receive 钩子不能正常执行 git pull 解决方法www.111cn.net 编辑:edit02_lz 来源:转载今天在 git 版本控制系统中出现 post-receive 钩子不能正常执行 git pull 的操作,折腾了好久才发现是 git 的钩子在运行的时候会调用 GIT_DIR 这个环境变量,下如来记录如何解决这个问题的方法。

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

  1. #!/bin/sh  
  2. export LANG=zh_CN.UTF-8  
  3. cd /www/myproject/  
  4. unset GIT_DIR //重要是这里..  
  5. git pull origin master 

使用 git 做版本控制的朋友希望你不要和我一样忽略这个小细节的问题。

目录
相关文章
|
5天前
|
开发工具 git 开发者
|
5天前
|
开发工具 git 开发者
Git Pull vs. Git Fetch:深度解析
【2月更文挑战第29天】
263 0
Git Pull vs. Git Fetch:深度解析
|
5天前
|
开发工具 git
git pull之后出现REBASE(1/1)
git pull之后出现REBASE(1/1)
9 3
|
5天前
|
监控 Java 网络安全
在 ABAP 系统启用 Git-Enabled Change and Transport System 的先决条件
在 ABAP 系统启用 Git-Enabled Change and Transport System 的先决条件
7 0
|
5天前
|
存储 开发工具 git
Git 版本控制系统的完整指南
Git 是一个流行的版本控制系统。它是由 Linus Torvalds 于 2005 年创建的,自那时以来由 Junio Hamano 维护。 它用于: 跟踪代码更改 跟踪谁做出了更改 编写协作
266 1
|
5天前
|
开发工具 git
百度搜索:蓝易云【git生成change-id的解决方法】
请注意,以上方法适用于本地仓库。如果你是在使用Gerrit进行代码审核,Gerrit会自动为每个提交生成Change-Id。如果在使用其他代码托管平台,可能需要根据平台的规范自行生成和添加Change-Id。
68 2
|
5天前
|
开发工具 git 开发者
从入门到精通:Git版本控制系统完全指南
从入门到精通:Git版本控制系统完全指南
51 1
|
5天前
|
存储 网络安全 数据处理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
|
5天前
|
Linux 开发工具 git
【Linux系统编程】初步运用git工具--2
【Linux系统编程】初步运用git工具--2
|
5天前
|
Linux 开发工具 git
【Linux系统编程】初步运用git工具--1
【Linux系统编程】初步运用git工具--1

相关实验场景

更多