0%

git进阶操作

起因

好久没更新了,开更,也算是考完试了,终于有时间更新博客了,软考考砸了捏,呜呜呜。

git子模块

这个什么是意思呢?就是字面意思,首先,我们当前的git仓库是一个主模块,但是,我不可能一个主模块可以实现所有功能的啊,这个时候就像项目需要调用其他模块和代码一样。主模块有时候也需要子模块,然后调用子模块才能正常工作。

1
2
3
4
5
6
7
8
9
10
git submodule init
git submodule add url
#初始化或者添加子模块

git submodule update
git submodule foreach 'git pull origin master'
#更新子模块

git submodule deinit name
#删除子模块,注意力,如果使用git bash的话,还得修改.git中的一些东西。删除子模块,这个只是开始,然后还得删除.git中的module中的模块,删除外面的模块文件夹,修改.git/config中关于子模块的地址和状态,删除外面gitmodule中子模块的地址,然后才算是删完,此时提交是ok的,不会冲突,也不需要git pull
子模块提交和推送

下载子模块很简单,切换子模块就是进入子模块目录就ok了。注意了,如果修改了子模块想要推送的话。就得进入子模块中,才能进行提交和推送,此时,你得有管理员权限或者提交权限才可以哦,不然是无法更新子模块的,你在主模块中的提交是不包括子模块的。

git子模块的致命问题

首先呢,.git文件是不允许随意修改的,这个在提交的时候很多东西不会提交,只会上传那些操作和提交记录等,本地就有很多脚本和hook。但是还有一个gitmodule的文件,这里包含了子模块的名称和url。因为主模块不知道子模块要些什么东西,所以给了比较大的权限。所以,如果下载到有病毒的子模块,那么就可以在下载子模块去修改主模块的钩子和脚本,等某个操作执行完毕就触发hook,去执行恶意代码。

不过现在好像修复了,不过有些版本还是会有这个问题的。

github二级密码

现在登录github界面就可以看到要二级密码登录了。也就是2FA了,我感觉国内的gitee可能也要上这个,因为喜欢抄嘛。现在,我感觉是在观望github的二级密码怎么样。

[Git] 一次搞定:Github 2FA(Two-Factor Authentication/两因素认证) - 千千寰宇 - 博客园 (cnblogs.com)

可以根据如上操作,进行绑定,至于软件,随便找一个2FA的软件就ok了。

管理员删库保护

这个就很简答了,在仓库设置中添加删除保护就好了。

管理员fork删库保护

这个问题,我也是第一次遇到,就是我在公司进入gitee的企业版嘛,我fork了一个项目,我却发现不能删除了,这个让我非常吃惊!我删除这个fork的库,竟然也要管理员同意,看来是对库进行额外的保护。

总结

git确实厉害,已经离不开了,我想起来之前那个linux开源社区的大问题,有一个黑客Jia Tan,通过一个解压软件就实现了,入侵,它修改了脚本,让脚本在运行的时候,故意中断,这样就可以进入其他地方去工作了,因为脚本不想代码可以编译找出bug的,所以非常难以发现。所以,这些个开源软件,我只能说一定每一个后面都有后门,希望,这些bug早日修复,希望有更多人注意开源安全和网络安全。

-------------下次的来访是什么时候呢[doge]-------------