这两天世界最大的猴类交友社区GitHub也被国人给攻陷了,只因国人在github建了一个仓库996.ICU,目的召集众猿人共同声讨996加班制度,有一种现实版猩球大战的节奏。何为996?就是朝9晚9连上6天。何为ICU?就是重症监护室。整个连起来就是上班996生病ICU,听起来真顺耳。就在前几天我自己面临了一次git偶发性事故,差点体验一把。
前言
前几天电脑抽风,下午正在敲着代码,几分钟前提交一个图标,后来经产品审查图标不好看需要换一个,发现本地代码使用git可以正常pull和push代码,就是不能提交这个图片。期初怀疑是一并提交jar和so包引起的,后来我切一个分支还原到只有这个图标,还是不行:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-807MpLrS-1587557693518)(https://note.youdao.com/yws/api/personal/file/F0BCFBA14E3F40739B460D8011ED05AC?method=download&shareKey=3d10eb43947becb14e9ce50799dfcb24)]
看到401首先想到的是权限不足,于是找管理员查看tfs上自己的权限,发现都正常的,也应该是正常的,因为自己可以正常的pull和push代码,无奈要尽快找原因,下周一要打包提测。
调大git推送限制
后来想到既然是图片、jar、so包,说不定和提交的文件质量有关。其实还是怀疑,因为就一个小图片和一个jar两个so包都很小,并且单个传也不行。于是百度、google,还真有这个说法的,并且满篇都是:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L6e633hB-1587557693521)(https://note.youdao.com/yws/api/personal/file/0274D452F91B469BB68BE4FC99DF5291?method=download&shareKey=44bea29bdb3c16ff6bd4324ecef6172c)]
激动啊,试呗,试了好多遍,还是不行,于是仔细看是他们的报错原因:
RPC failed; HTTP 411 curl 22 The requested URL returned error: 411 Length Req
401和411差一个数,我的是401,是没有登录权限,他们的是411,是长度权限限制。耽误青春,没办法只能接着找原因。
端口号思考
后来想着是不是remote断开了,后来查看config,一切正常。着急啊,全网找过来也找不到什么原因,后来想到前段时间公司把常用的3389端口号和22端口号给禁了,这里也刚好有一个22,好巧,说不定就是这原因。于是我把电脑上之前改过的3389端口号以及防火墙策略恢复了,还是不行,重新更改,还是不行,那就是剩下22端口了。后来上网搜发现22端口和ssh链接有关,但我一直用的https形式remote代码库的,跟我关系不大,不过这个22端口一直挂在我心里。。。继续度娘,狗爹,就这样半天过去,今天周五难不成要加班吗,其实已经8点了,还是下班吧。
验证环境
一晚上就想着这件事,第二天我把自己的笔记本带来了,连上公司的局域网,然后用自己的代码库账户拉代码提交代码,拉文件提交文件,卧槽,一切如丝般顺滑。顺便试了试昨天的22端口,采用ssh形式连一下果真不行,sourcetree提示这不是一个git仓库。至少我的笔记本是正确的,能战斗的,我开始怀疑我的台式机了。越想越想不开,装机?等等再看看,装机吧,等等再看看,装吧,哎,装。为了下周一的快准狠,这里也必须痛下决断,装好后先装git,然后进行尝试,结果呢还是老样子,雨一直下。
怀疑windows凭证
后来我看到有人提到说是“windows凭证”的问题,说是windows凭证保存有之前的账号密码,可能账号密码错了。于是希望又来了,进到系统管理凭证界面,发现并没有多余的凭证,又一次冷水凉身。想到周一的快准狠,不能死心,重启电脑吧说不定就好了,结果呢再次洗澡。
剃度皈依之我是谁
再后来我又把git卸载了,卸的干干净净,把常用的几个config统统删掉,注册表清理干净,项目隐藏的“.git”————删!凡是和git有关的统统剃干净。来一次美丽的重生,直接装到C盘。希望又来了,结果再次push的时候,却不提示填账号密码,并且显示remote仓库地址失败,多次尝试就是不提示账号密码,就只显示remote仓库地址失败,于是咬牙切齿,把本地的、全局、系统的config再次解剖了一遍,只差再次剃他们了。忽然我看到一个解决不显示账号密码的指令git config --system --unset credential.helper
,迅雷不及眼耳执行啊,kao,又说找不到c盘git目录的config文件。但是我来到c盘里git目下确实有config文件啊,于是又问度娘狗爹,说是属性git文件夹设置管理员再执行,结果没用,哎主问题没找到又来个此问题,屋漏偏逢连夜雨。
惊喜过后仍不自知
后来想C盘属于系统级别的,自己作为开发者以开发为主,平时也很少去动系统,但是知道系统盘有很多系统权限限制,尤其是ProgramFiles或(x86),后来果断把git最外层的系统级别的文件夹授予访问权限(其实额外新建一个文件夹装进去也是可以的)。接着执行上边的指令,哇,竟然可以提示输入账号了,哇,竟然也提示输入密码了。草,又来了个fatal: Authentication failed
,又报身份验证问题,这明显和原来如出一辙,我是不是被团队踢了,哎,雨一直下。
剖腹or破釜沉舟
冥思苦想,回忆这两天自己的经历,把之前自己学的统统用了一遍,敲git命令敲到恶心(我已经不再相信任何git操作工具了,只相信最原始的命令),没少洗澡,只剩下等着周一上班剖腹吧,但是后来想到期初的401和22还是不能瞑目。周一终于到了,灰头丧气的找到运维给自己新装的系统加域,一边嘀咕着加完域我就找个介错人(领导)帮忙执行剖腹。域加完了,内心很平静,然而肌肉反应促使我闭着眼把命令又敲了一下————奇迹,他竟然好了!百思不得其姐啊,本着程序员刨不倒墙根儿不死心的决心,私下询问和观察发现从周一早上来身边有好多打伞的,哈哈。坑爹运维,为了提高安全性把好多软件、网址都禁了,包括上传文件的大小和下载文件的速度都限制了,我的电脑之前为了不想受他们的控制偷偷脱缰了,所以无法回到家园的怀抱。
总结
以上是自己亲身经历的一次git偶发性事故,浪费了很多精力,当然也思考了很多(都差点切腹了),记一次里程吧。所以啊,国有国法家有家规,想要在某个环境中生存就要去适应这个环境,不然耽搁的都是自己的生命。