文档章节

GIT_DIR和GIT_WORK_TREE的妙用,工作区和仓储可隔离

扣丁禅师
 扣丁禅师
发布于 2016/09/29 10:44
字数 381
阅读 60
收藏 0

我们通常git clone 下来的代码,工作区代码目录下的.git 就是对应本地仓储,所有分支信息,配置都在此目录。和服务的bare格式相差不大,可以通过技巧转成bare。

那思考下,如果我把这个.git 移动到其他位置,或者想把一个bare格式的仓储和当前工作区代码关联上,怎么做到呢?

答案就是通过指定GIT_DIR, GIT_WORK_TREE。

有人说你闲的蛋疼,哪有这种情况啊。我就是实际情况遇到了,场景是这样:

  1. 有一个git服务器,里面的仓储都是bare形式,平时的代码都是git push到此。
  2. 偏偏这个服务器还开了一个WEB,每次提交会通过git hook,自动部署更新代码
    之前有篇介绍了git 自动部署的:http://www.yinqisen.cn/blog-675.html
  3. 解决BUG,直接在服务器上就改了,避免小修改还要产生git push记录,去反复验证的繁琐
  4. 就是这个问题的需求:我需要git status, git diff, git branch 查看我具体改了什么,并做git push
  5. 要完成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 出来的效果一样使用。

© 著作权归作者所有

扣丁禅师
粉丝 15
博文 31
码字总数 13588
作品 0
沈阳
架构师
私信 提问
git实现自动化部署,同时push到多个远程仓库

方法一、 1、先在服务器创建裸仓库 git init --bare 裸仓库是可以被正常 和 更新的, 裸仓库不包含工作区,所以并不会存在在裸仓库上直接提交变更的情况 git init --bare test.git 2、配置h...

boy12626
2017/05/19
0
0
git怎么在工作区之外的目录执行pull功能?

是这样的,我有一个裸版本库:/home/blog.git 然后我在 /home/wwwroot/blog 目录下创建了版本库 我想从blog.git中pull内容 一般是先 cd /home/wwwroot/blog 然后执行 git pull /home/blog.gi...

吾爱
2014/03/07
3.4K
1
Git学习教程

Git是一个分布式的文件版本控制系统,每个电脑都有一个完整的文件库和版本库,文件库之间可以互相推送和抓取版本信息。CVS和SVN是集中式的文件版本控制系统,文件库和版本信息集中存放在服务...

JAVA_NINA
2016/10/21
11
0
GitPython git python 的开发库

工程地址: https://pypi.python.org/pypi/GitPython/需要安装先安装: gitdb https://pypi.python.org/pypi/gitdbGitPython使用模块对象访问git配置库。仓库操作 数据库对象 GitDB GitCmdObje...

蓝桥书生
2013/06/28
0
9
《Git权威指南》读书笔记 第五章 Git暂存区

5.1 修改不能直接提交 首先修改welcome.txt文件,在这个文件后面追加一行: 使用git diff命令查看修改后的文件与暂存区(并不是版本库,后面会有相关讨论)中的文件的差异: 差异的输出格式:...

一万
2016/07/16
35
2

没有更多内容

加载失败,请刷新页面

加载更多

Java agentlib参数分析

Java agentlib参数分析 再用intellij idea进行远程调试的时候,具体的配置选项如下: 标红的一行显示了远程调试需要添加的虚拟机参数。这个参数到底有什么意义? 我在命令行输入java命令,输...

Mr_Tea伯奕
9分钟前
0
0
四种软件架构演进史,程序员会一种就很牛了!

如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。 ...

我最喜欢三大框架
14分钟前
0
0
如何做高可用的架构设计?

定义目标 既然我们的目标是做到高可用,那么我们就有必要先明确清楚高可用的含义,并通过拆解目标,让目标可以被量化。按照我的理解,可以将目标按照以下三条进行拆解: 1. 保持业务高稳定性...

别打我会飞
14分钟前
0
0
《错误的行为》的读后感优秀范文4000字

《错误的行为》的读后感优秀范文4000字: 第一章经济人和非理性人。本书中的经纪人是指经济学家经济模式中虚拟的理想人物,非理性人是指现实生活中实实在在存在的人,与经济人相对应的人。 ...

原创小博客
25分钟前
0
0
将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向

作者图解释很好 https://blog.csdn.net/yanxiaolx/article/details/52073221

南桥北木
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部