GIT_DIR和GIT_WORK_TREE的妙用,工作区和仓储可隔离
2016-09-29 10:44
357 查看
我们通常git clone 下来的代码,工作区代码目录下的.git 就是对应本地仓储,所有分支信息,配置都在此目录。和服务的bare格式相差不大,可以通过技巧转成bare。
那思考下,如果我把这个.git 移动到其他位置,或者想把一个bare格式的仓储和当前工作区代码关联上,怎么做到呢?
答案就是通过指定GIT_DIR, GIT_WORK_TREE。
有人说你闲的蛋疼,哪有这种情况啊。我就是实际情况遇到了,场景是这样:
有一个git服务器,里面的仓储都是bare形式,平时的代码都是git push到此。
偏偏这个服务器还开了一个WEB,每次提交会通过git hook,自动部署更新代码
之前有篇介绍了git 自动部署的:http://www.yinqisen.cn/blog-675.html
解决BUG,直接在服务器上就改了,避免小修改还要产生git push记录,去反复验证的繁琐
就是这个问题的需求:我需要git status, git diff, git branch 查看我具体改了什么,并做git push
要完成4的任务,就必须通过GIT_DIR, GIT_WORK_TREE解决了
很简单:
这么做的好处是,只要当前shell环境变量里有GIT_DIR, GIT_WORK_TREE,你就可以和正常git clone 出来的效果一样使用。
那思考下,如果我把这个.git 移动到其他位置,或者想把一个bare格式的仓储和当前工作区代码关联上,怎么做到呢?
答案就是通过指定GIT_DIR, GIT_WORK_TREE。
有人说你闲的蛋疼,哪有这种情况啊。我就是实际情况遇到了,场景是这样:
有一个git服务器,里面的仓储都是bare形式,平时的代码都是git push到此。
偏偏这个服务器还开了一个WEB,每次提交会通过git hook,自动部署更新代码
之前有篇介绍了git 自动部署的:http://www.yinqisen.cn/blog-675.html
解决BUG,直接在服务器上就改了,避免小修改还要产生git push记录,去反复验证的繁琐
就是这个问题的需求:我需要git status, git diff, git branch 查看我具体改了什么,并做git push
要完成4的任务,就必须通过GIT_DIR, GIT_WORK_TREE解决了
很简单:
export GIT_WORK_TREE=/srv/html/zenbbs export GIT_DIR=/home/git/repos/zenbbs.git # git status, git diff, git log, git commit ...
这么做的好处是,只要当前shell环境变量里有GIT_DIR, GIT_WORK_TREE,你就可以和正常git clone 出来的效果一样使用。
相关文章推荐
- 不正确地使用HashMap引发死循环及元素丢失
- CICS的database中R D中参数的含义
- 【USACO 1.5】SuperPrime Rib
- 使用Nodejs+Protractor搭建测试环境
- C#学习笔记------3、继承
- Bootstrap模态框使用WebUploader点击失效问题解决
- 第五周- 项目三 括号的匹配
- 第五周 项目1-建立顺序栈算法库
- Java中10进制转byte[]
- 今日头条校招2016-09-28在线编程题(2题)
- 广告反作弊
- 第四周 项目六-多项式求和
- centos6.7安装Hadoop2.7.3
- 王朝 第五周 绝对值
- ffmpeg参数中文详细解释
- css布局模型
- 第五周 项目2 - 建立链栈算法库
- Cognos安装及通过ODBC连接Tibero数据库
- SHELL编程-续
- 更改tomcat编码