背景
首先说明的是,这种情况的确是小概率事件
然后呢,原因也是很简单,但是如果单独从问题现象出发的确需要花时间debug
当然,问题也不是无缘无故就出现的,我前几天在整理sourcetree的使用培训文档,然后进行了很多的“骚操作”,目的是为了培训时的演示效果
究竟是怎样的情况呢,现象图片如下:
分析
- 我首先担心的是,难道「历史记录」被全部删除了?我赶紧去git服务器上面看了「commit」,发现「历史记录」都还在,那我就放心了。
2.在背景部分我说过了,我最近做了好些乱七乱八的操作,所以,既然没有影响到服务器上的仓库,那我估计是本地出问题了。
3.我在百度上搜索了一下,的确还有人跟我情况一样,说是sourcetree的bug[https://blog.csdn.net/guoqi_666/article/details/119650090],然后我就进行了「重启sourcetree」、「重启电脑」、「关机-开机」,然而并没有解决问题。
4.然后我在想,难道是sourcetree版本引发了某些bug,于是我从sourcetree官网上下载了最新版本,然而还是一样没有解决问题。
5.难道是电脑中关于git的存储信息出现问题了?我下载了另外一个git的gui软件「Tower」,然后用Tower软件能显示出「历史提交视图」
6.然后我直接使用 git log,是能够打印出历史提交信息的
7.然后我试着「彻底删除sourcetree」,于是按照[https://qa.1r1g.com/sf/ask/1691411641/]中的内容将sourcetree相关的配置文件全部删除掉,内容如下:
您可以看到在擦除SourceTree首选项中描述的过程是否有帮助 - 但要小心:
请注意,擦除首选项意味着您将丢失书签和查看设置.
如果擦除您的偏好不是导致问题的原因,请备份这些.
视窗
确保SourceTree已关闭
在删除文件之前,请确保在以下文件夹中备份文件
删除文件" bookmarks.xml"," opentabs.xml"," userhosts"inC:\Users\<username>\AppData\Local\Atlassian\SourceTree\
删除文件 C:\Users\<username>\AppData\Local\Atlassian\SourceTree.exe<random_string>\<version_number>\user.config
再次打开SourceTree以测试它是否有效.
苹果电脑
确保SourceTree已关闭.
在删除文件之前,请确保在以下文件夹中备份文件
删除所有内容 ~/Library/Application Support/SourceTree/
删除~/Library/Preferences/com.torusknot.SourceTreeNotMAS.plist(你应该使用SourceTree的直接版本,因此"NotMAS")
如果您正在使用Mavericks或更高版本,请注销并重新登录.当您登录时,Mavericks会缓存所有首选项,删除文件实际上不会再清除设置.
再次打开SourceTree以测试它是否有效.
...
如果这不能解决您的问题,请关闭SourceTree并恢复文件,然后再次重新打开SourceTree(如果可能的话).
然而还是没有作用
8.然后我想到的是,难道git已经被“污染”搞乱了?我最开始想到的是删除git然后重新安装,然后一了解发现,苹果电脑带的git是xcode自带的,也就是安装xcode时安装的git,我一想那就先不用删除了,先看看git中是不是配置出问题了,然后使用 git config --list 查看git中的配置信息,我一下就发现了问题:里面有一项是:il8n.logoutputencoding=GB18030
我一看我突然想起来了,前几天我为了展示“乱码”问题,改成了GB18030,然后就没改回去了。我想到的是如果出现乱码了,我肯定会知道去配置编码方式,但是竟然没想到的是,竟然会导致sourcetree上的「历史提交视图」直接不显示了。
解决办法
在命令行中输入:
git config --global il8n.logoutputencoding utf-8
或者是把这个配置删除掉,使用默认的
git config --global unset il8n.logoutputencoding
题外话
也奇怪,如果使用il8n.logoutputencoding=GB18030就会出现「历史提交视图」为空的现象,如果随便乱写il8n.logoutputencoding=gbk123,都不会出现问题,然后呢如果配置成gbk,的确会乱码,那应该git默认是使用utf-8的,所以把该配置删除也是正常的。
有兴趣的,可以在命令行中输入:
git config --global il8n.logoutputencoding GB18030
然后重启sourcetree,应该能复现我所遇到的「问题现象」。挺有意思的~
相关文章;
https://git-scm.com/book/zh/v2/起步-安装-Git
https://www.cnblogs.com/yanzige/p/9810333.html
https://git-scm.com/book/zh/v2/起步-初次运行-Git-前的配置
https://blog.csdn.net/qq_27258799/article/details/78977764
https://www.cnblogs.com/billhsu2009/p/8934302.html
https://blog.csdn.net/iteye_17224/article/details/82583609
https://www.sourcetreeapp.com/
https://blog.csdn.net/guoqi_666/article/details/119650090