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 做版本控制的朋友希望你不要和我一样忽略这个小细节的问题。

目录
相关文章
|
8月前
|
开发工具 git
git fetch和 pull的区别
`git fetch`和 `git pull`在Git中扮演着不同的角色,了解它们的区别和使用场景对于高效管理代码库至关重要。通过合理使用这两个命令,可以更好地控制代码合并过程,减少冲突,提高团队协作效率。
699 97
|
开发工具 git Python
通过Python脚本git pull 自动重试拉取代码
通过Python脚本git pull 自动重试拉取代码
366 5
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
8月前
|
开发工具 git
git fetch和 pull的区别
通过这些内容和示例,您可以系统地理解 `git fetch`和 `git pull`的区别,并在实际工作中灵活应用这两个命令,提高版本控制的效率。希望这些内容对您的学习和工作有所帮助。
398 24
|
8月前
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
286 18
|
8月前
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
224 16
|
11月前
|
数据可视化 开发工具 git
如何解决 Git 版本控制系统中冲突的问题?
在Git版本控制系统中,冲突是指在合并或拉取操作时,两个或多个开发者对同一文件的同一部分进行了不同的修改,导致Git无法自动确定应该采用哪种修改。
306 1
|
开发工具 git 开发者
Git Fetch 和 Git Pull:理解两者的区别
【8月更文挑战第27天】
1008 1
|
开发工具 git
深入理解Git中的git pull和git fetch命令
深入理解Git中的git pull和git fetch命令
693 0
|
网络安全 开发工具 git
6-23|自建仓库如何免密执行git pull
6-23|自建仓库如何免密执行git pull