Git 使用日志
git仓库嵌套问题
前段时间博客站从wordpress迁移到了hexo,然后在迁移的过程中,发现了一个问题,hexo的主题是clone三方开源主题仓库,
这个主题项目会放到hexo博客项目的themes目录下,这样就导致了一个git仓库嵌套的问题。
也就是说hexo根目录下有一个.git目录,/hexo/themes/theme/ 下也有一个.git目录。当我们在提交hexo项目的时候,会发现themes目录下的主题项目并没有提交上去。
这个时候就要看自己的具体需求了,对于个人博客的需求,我最初的本意是解决一个自己博客网站的一个配置文件备份的问题,我是希望主题文件能够被同步管理。
也就是取消这个嵌套。
- 首先取消这个嵌套,肯定是先要删除内层git仓库的.git目录。
- 然后尝试记录
git add <this_directory_path>
跟踪这个目录,但是发现并没有生效。 - 这时候开始警觉了,我打算拉一个新的分支做这个事情(
因为之前没注意这个嵌套问题,导致配置文件丢失。血的教训,手动恢复了大半天)。 git checkout -b fix-nesting-issue
新建一个分支。- 在这个分支上,在项目根目录下面新建一个themesbak目录,然后把themes目录下的文件都拷贝到这个目录下。这个时候提交一次代码。
- 然后删除
themes
目录下的所有文件,这个时候再提交一次代码。 - 然后再把
themesbak
目录下的文件拷贝到themes目录下,这个时候再提交一次代码。 - 最后删除
themesbak
目录,提交一次代码。 - 问题解决,合并分支就行了。
究其原因,是因为git仓库嵌套使用之后,内层的git仓库的更改不会被外层的git仓库所感知。
git里面有一个子模块(submodule)的概念,当一个项目比较复杂的时候,可以把这个项目拆分成多个子模块,各个模块之间是独立的,但是可以通过父项目来管理这些子模块。
这个时候,父项目会有一个.gitmodules
文件,里面记录了子模块的地址,这样就可以通过父项目来管理子模块的代码了。
拓展
当父项目克隆的时候,子模块的代码不会自动同步到最新的版本。需要手动更新子模块。
1 | 递归初始化更新子模块 |
针对之前描述的博客主题仓库嵌套的问题,主要是为了当博客主题版本迭代的时候,可以通过
git pull
来直接更新主题,来使用更多的新的主题功能与特性。但是既然都个人博客了,对一些定制化的需求还是有的,所以干脆自己管理与维护这个主题项目,这样也可以更好的理解这个主题的代码结构,方便自己进行二次开发。
Failed to connect to github.com port 443 after 21035 ms: Timed out
本来想创建一个github仓库用于管理自己学习过程中编写的一些demo案例,在学习的过程中,由于时不时要使用魔法去查阅部分资料,然后完成一些学习案例的编写的时候push代码,出现了该问题
这个问题是因为网络问题导致的。
- 网络不稳定
- 代理问题
- DNS解析问题
- 本地防火墙问题
要依次排查,根据网上找到一个可能的解决方案,就是修改git的配置文件。
通过控制台输入以下命令:
1 | git config --global --edit |
然后在打开的配置文件中添加以下内容:
1 | [http] |
这个配置项的作用是关闭git的ssl验证。
但是注意会有安全问题。根据需求来选择是否使用,在这里是不推荐的。