开发日记1

今天遇到了一个问题。之前随手写了一个自动部署的脚本,今天报错了。写出来和大家分享一下。

这个自动化脚本是读取git仓库的项目,然后选择一个分支的代码进行编译测试打包部署。结果在读取git分支这一步出错了,我直接读取仓库的refs/heads目录文件。之前这个目录下有多个文件,每个文件代表一个分支。可是今天这个目录文件下面没有了,那分支都去哪里了,难道分支被删了?不管怎样,至少有一个分支吧,我心里默想到。事实摆在眼前,我们还是先解决问题吧。

最后改成用命令git show-ref --heads获取分支,自动部署脚本正常了。


看来还需要好好研究一下git。

git会不定期的运行auto gc的命令,这个命令一般是不做任何处理,只有当git仓库有很多松散的对象(不在packfile中的对象)、很多packfile时才会执行git gc命令。此命令会做很多工作:收集所有松散对象并将它们存入 packfile,合并这些 packfile 进一个大的 packfile,然后将不被任何 commit 引用并且已存在一段时间 (数月) 的对象删除。

手动执行git gc,执行完毕后可以发现,不光refs/heads里面文件被清空了,整个refs目录中的文件都被清空了。Git 会将这些文件挪到 .git/packed-refs 文件中去以提高效率。

当更新一个引用时,Git 不会修改这个文件,而是在 refs/heads 下写入一个新文件。当查找一个引用的 SHA 时,Git 首先在 refs 目录下查找,如果未找到则到 packed-refs 文件中去查找。因此如果在 refs 目录下找不到一个引用,该引用可能存到 packed-refs 文件中去了。

转载于:https://www.cnblogs.com/lhcpig/p/4739608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值