不小心更改了以 git 结尾的行,现在无法更改回来,因为它说没有任何更改
accidentally changed line ending in git, now can't change back because it says nothing changed
几天前,我不小心更改了某个文件的行尾,并提交了更改。 (原来是 CRLF,现在错成了 LF。)我仍然不知道这是我的编辑太聪明了,还是 git 太聪明了。 (实际上,根据我尝试撤消此操作的经验,我怀疑它是 git。)无论哪种方式,它都已完成,我想修复它。我以为我可以在我的编辑器中更改行尾,然后只更改行尾进行提交。 Git 拒绝了,声称我没有改变任何东西。所以我也添加了一个虚拟更改,但它随后提交了虚拟更改但也转换了行尾,所以它们仍然是 LF。可能相关的 git 设置:
C:\Users\ZKZ4PL2\eqs\hot-connect>git config core.eol
C:\Users\ZKZ4PL2\eqs\hot-connect>git config core.autocrlf
input
有什么想法吗?
首先,将 core.atocrlf
设置为 false,以避免 Git 的任何自动 eol 转换。
git config --global core.autocrlf false
其次,检查任何 .gitattributes
个文件,其中是否有 core.eol 个指令。
如果您有 none,那么在您的编辑器中更改 EOL 应该在 git add
上完成。
Git 没有看到任何更改的原因是它在将文件与以前的修订版进行比较之前应用了 autocrlf 转换。
行结束管理的最佳策略是禁用 autocrlf 和朋友并手动管理你的文件,除非你有非常具体的要求,特别是如果你有需要在 CRLF 中的文件,因为 Git 没有没有 'commit files as CRLF' 的选项,只有 'check out files in CRLF'。在某些情况下 Git 可能会感到困惑或导致意外结果(例如,直接从 GitHub 等下载文件会将其下载为 LF,提交文件后更改设置可能会导致无法提交的更改等)。
autocrlf input
意味着 Git 将在提交时将 CRLF 转换为 LF,这是相当误导的(在这种情况下称它为 autolf
会更合适)。
几天前,我不小心更改了某个文件的行尾,并提交了更改。 (原来是 CRLF,现在错成了 LF。)我仍然不知道这是我的编辑太聪明了,还是 git 太聪明了。 (实际上,根据我尝试撤消此操作的经验,我怀疑它是 git。)无论哪种方式,它都已完成,我想修复它。我以为我可以在我的编辑器中更改行尾,然后只更改行尾进行提交。 Git 拒绝了,声称我没有改变任何东西。所以我也添加了一个虚拟更改,但它随后提交了虚拟更改但也转换了行尾,所以它们仍然是 LF。可能相关的 git 设置:
C:\Users\ZKZ4PL2\eqs\hot-connect>git config core.eol
C:\Users\ZKZ4PL2\eqs\hot-connect>git config core.autocrlf
input
有什么想法吗?
首先,将 core.atocrlf
设置为 false,以避免 Git 的任何自动 eol 转换。
git config --global core.autocrlf false
其次,检查任何 .gitattributes
个文件,其中是否有 core.eol 个指令。
如果您有 none,那么在您的编辑器中更改 EOL 应该在 git add
上完成。
Git 没有看到任何更改的原因是它在将文件与以前的修订版进行比较之前应用了 autocrlf 转换。
行结束管理的最佳策略是禁用 autocrlf 和朋友并手动管理你的文件,除非你有非常具体的要求,特别是如果你有需要在 CRLF 中的文件,因为 Git 没有没有 'commit files as CRLF' 的选项,只有 'check out files in CRLF'。在某些情况下 Git 可能会感到困惑或导致意外结果(例如,直接从 GitHub 等下载文件会将其下载为 LF,提交文件后更改设置可能会导致无法提交的更改等)。
autocrlf input
意味着 Git 将在提交时将 CRLF 转换为 LF,这是相当误导的(在这种情况下称它为 autolf
会更合适)。