之前一直借助sourcetree对git仓库进行管理。今天打算使用vscode内置的git管理。
尝试修改任意文件,然后打开vscode 的git管理界面。vscode也是提供了图形化操作界面,大家都能看得懂。
-
暂存修改的文件
-
提交
-
输入提交信息
本地提交的流程,就一个地方卡到我了,我们都知道提交时候要输入message,但是一些个人杂项(类似于存一些私人文件),这种仓库我在使用sourcetree时候一直是不输入提交信息的,sourcetree默认给我添加“no message”,但vscode里面不行,提交了几次都不成功,后面想起了,message好像是要输入的。所以后面尝试输入message,就成功了,如果你们也遇到了这个问题,可以参考下。
本地提交完成后,就推送到远程仓库,假设之前已经绑定好了,直接点推送就行,如果没绑定,点推送到...然后vscode会弹出让你输入远程仓库地址。
我这里已经绑定好了(我是用ssh绑定的),所以直接点推送。
问题又来了,推送时弹出错误
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这里说到了权限有问题,我仔细想了一下,我用sourcetree根本没有权限问题,所以可以判断,我git是正常使用的,为什么vscode却不行?我对比了两者之间的流程。
发现vscode少了验证私钥密码这部分,因为打开sourcetree,会先验证一次密码。
为了验证我的想法,我不用vscode内置的推送,也不用sourcetree,直接命令行 git push,发现确实是有密码输入。
但是为什么vscode内置的git管理不会弹出来让我输入密码呢?我在网上没找到答案。。。
我想了几种替代方案
-
直接在vscode里面使用终端,输入git命令。但是一般我们寻求工具,就是不想输命令的方式。
-
把git命令封装到package.json的scripts里面,比如,我们要推送,需要 git push origin master,把这个命令封装一下,就直接 yarn push 即可。
-
把密码重置成空。空即不需要密码。
-
继续使用sourcetree,毕竟打开软件只需要输入一次密码即可,功能齐全。还是很香的,但好奇心驱使我一定要用一下vscode内置的git管理,毕竟做了一年多,天天用着vscode,每次都把这个功能当透明。是时候用一下,看看香不香。毕竟能在vscode里面解决的事,为什么还要多下载多打开一个软件。
我最后的解决方式选择了第三种,第一第二种,我猜测每次都需要输入密码,感觉略繁琐,有兴趣的朋友可以帮我验证一下,验证后,如何解决每次都输入密码的问题?
重置密码流程
找到秘钥所在的文件夹,一般来说是在C盘用户目录下的.ssh,输入以下
ssh-keygen -f id_rsa -p
执行命令后,输入旧密码,然后新密码不输入,直接回车即可。然后测试推送通过,商店下载了一个Git History 插件,搭配起来用了一下。体验还不错。
个人电脑,只要保存好自己的私钥不泄露,一般是没什么风险。设置密码是为了多一层校验,比如公用的工作电脑,你的项目肯定不想让别人去修改提交吧。所以可以加多一层密码校验。
采用其他解决方式,网上应该也有很多。你们知道的话,也可以和我分享。本文主要还是记录一下我在使用vscode内置git管理时,出现的问题和解决的方法。