trae回退后看不出差异,然而引发git更改
描述
在trae的回退功能中,我注意到。
agent并没有对文件进行修改,我在他未进行任何操作时中断了请求。
然而回退后,git管理中还是有提示。
我执行git diff他给出类似如下的显示。
warning: in the working copy of 'src/router/dev-routes.js', LF will be replaced by CRLF the next time Git touches it
原因
在windows系统上,git会默认进行LF和CRLF转换。
前者是unix换行符格式,后者是windows换行符格式。
推送时,windows上的文件会被转化为LF推送到远程(比如github),拉取时,远程的LF文件会被转化为CRLF文件到本地。
这样的设计应该是为了保证兼容性,始终使得远程的文件为LF格式,以兼容别的系统。
而CRLF是windows的换行符格式,git毕竟不应该私自篡改文件,因此采用默认自动转换的方式。
于是乎,trae的回退存放的是LF格式,然后他有没有这种默认的自动转换,所以导致git认为文件发生了变化(CRLF和LF换行符不同),然后在trae或者vscode中还看不出区别。
解决
如果明确发现commit“更改”中没有任何一行红的绿的,直接放心放弃所有更改。
如果要避免这种情况出现,可以取消git的自动转换,然后在windows上使用专业的代码编辑器去查看文件,并使用LF换行符。(毕竟应该始终保证远程的代码是LF换行符)
git config --global core.autocrlf false

浙公网安备 33010602011771号