Number of lines annotated by Git is not equal to number of lines in the file, check file encoding and line separators.


項目中某個java文件左邊欄右鍵->Annotate無法顯示,IDEA提示Number of lines annotated by Git is not equal to number of lines in the file, check file encoding and line separators.

可能是之前某一次Commit的換行符有問題,正常應該是LF或者CRLF,那個文件是CR - Classic Mac (\r)。

回想幾天之前有一次Commit,IDEA提示:

當時選擇了中間那個Commit As Is

簡單解決方式是對那個java文件右下角由CR改為LF重新Commit即可,然后就能夠查看Git Annotate了,但這樣有個問題,之前的Annotate信息會丟失,全部變成最后提交者。
因為該java文件較大,接近1w行代碼,有很多人修改過,希望能保留Annotate歷史信息。

嘗試了2種方式均失敗:

  1. 對單個文件回退版本,git log --oneline Xxx.javagit reset verNum Xxx.java,注意單個文件不能添加--hard參數。
    再次Commit發現line separator沒有變,仍然是CR無法查看Annatate。

  2. git reset --hard 回退到分支,在git cherry pick
    因為中間有同學的提交是個merge操作,直接cherry pick提示is a merge but no -m option was given,該merge操作涉及文件很多,嘗試添加-m參數也不行。

最后突然想到個思路:
git reset --soft到有問題Commit之前的分支,然后按git log history依次git commit,最后git push -f,這樣該大java文件的Annotate得以保留,依次Commit的信息變成了最后提交者,由於最近的Commit改動較小,折中考慮選擇了此方案。

值得注意的是為了操作安全,以上操作是單獨拉了單獨分支(包括本地和遠程),git操作測試無誤后再對原分支進行操作。


參考:
https://confluence.jetbrains.com/display/IDEADEV/IntelliJ+IDEA+2018.3+EAP+183.2153.8+Release+Notes
https://www.jetbrains.com/help/idea/configuring-line-endings-and-line-separators.html
https://youtrack.jetbrains.com/issue/IDEA-194895
https://blog.csdn.net/m0_38072683/article/details/82927639
https://blog.csdn.net/ejennahuang/article/details/99591008


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM