相关疑难解决方法(0)

使用PowerShell以UTF-8编写文件而不使用BOM

Out-File 似乎在使用UTF-8时强制BOM:

$MyFile = Get-Content $MyPath
$MyFile | Out-File -Encoding "UTF8" $MyPath
Run Code Online (Sandbox Code Playgroud)

如何使用PowerShell以UTF-8编写没有BOM的文件?

powershell encoding byte-order-mark utf-8

225
推荐指数
9
解决办法
21万
查看次数

为什么Git将此文本文件视为二进制文件?

我想知道为什么git告诉我这个:?

$ git diff MyFile.txt
diff --git a/MyFile.txt b/MyFile.txt
index d41a4f3..15dcfa2 100644
Binary files a/MyFile.txt and b/MyFile.txt differ
Run Code Online (Sandbox Code Playgroud)

他们不是文本文件吗?

我检查了.gitattributes,它是空的.为什么我收到这条消息?我不能再使用差异了

添加:

我注意到@文件中有一个权限,这是什么?这可能是原因吗?

$ls -all
drwxr-xr-x   5 nacho4d  staff    170 28 Jul 17:07 .
drwxr-xr-x  16 nacho4d  staff    544 28 Jul 16:39 ..
-rw-r--r--@  1 nacho4d  staff   6148 28 Jul 16:15 .DS_Store
-rw-r--r--@  1 nacho4d  staff    746 28 Jul 17:07 MyFile.txt
-rw-r--r--   1 nacho4d  staff  22538  5 Apr 16:18 OtherFile.txt
Run Code Online (Sandbox Code Playgroud)

git binary

135
推荐指数
9
解决办法
8万
查看次数

为什么Git认为我的cs文件是二进制文件?

我的存储库中只有一个cs文件,Git似乎认为它是二进制文件.(在git gui,它只是说"二进制文件不同".)

如何向Git表明我的cs文件是文本文件?

git binary

12
推荐指数
1
解决办法
5481
查看次数

Git对*.reg文件说"二进制文件a ...和b ...不同"

有没有办法强制Git将.reg文件视为文本?我正在使用Git来跟踪我的Windows注册表调整和Windows .reg用于这些文件.

更新1:我得到它来运行差异(谢谢,安德鲁).但是,现在看起来如下所示.这是编码问题吗?

index 0080fe3..fc51807 100644
--- a/Install On Rebuild/4. Registry Tweaks.reg
+++ b/Install On Rebuild/4. Registry Tweaks.reg
@@ -1,49 +1,48 @@
-<FF><FE>W^@i^@n^@d^@o^@w^@s^@ ^@R^@e^@g^@i^@s^@t^@r^@y^@ ^@E^@d^@i^@t^@o^@r^@
-^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;^@;
-^@^M^@
...
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新2:感谢所有帮助过的人:这就是我最终做的事情:创建.gitattributes包含内容*.reg text diff的文件,然后我将文件转换为UTF-8,因为UTF-16与diffs一样奇怪.我没有使用任何外国字符,所以UTF-8适合我.

windows git registry

12
推荐指数
2
解决办法
1万
查看次数

在git中将文件设置为非二进制

我有一个包含大量.cs文件的文件夹.其中一些文件(由于某种原因)被跟踪为二进制文件,git diff命令无法正常使用它们.我尝试将所有这些文件重新保存为UTF-8编码,但它没有帮助.我尝试更改目录,目录名称,文件名和文件扩展名,所有这些都有帮助.

我也尝试修改.gitattributes文件以将*.cs文件视为非二进制文件,但它对我没有帮助:

*.cs diff=csharp
Run Code Online (Sandbox Code Playgroud)

我需要一种方法将所有这些文件设置为非二进制文件,而无需更改其路径或名称.有这样的方式吗?

git

8
推荐指数
1
解决办法
7300
查看次数

如何在具有跨平台兼容性的 Git 提交中强制使用一致的行结尾

在与使用不同操作系统的人一起工作时,由于行结束,我遇到了合并冲突问题。我在 Windows 上工作,我的同事在 Mac 上工作。当他推送他的更改时,有时他没有处理过的文件会在 diff 中显示为已更改,因为现在^M每个文件上都会显示行尾。这导致了合并冲突。我在 Git 文档中阅读了以下内容:

当您将文件添加到索引时,Git 可以通过将 CRLF 行结尾自动转换为 LF 来处理此问题,反之亦然,当它检出代码到您的文件系统时。您可以使用 core.autocrlf 设置打开此功能。如果您使用的是 Windows 计算机,请将其设置为 true?—?这会在您检出代码时将 LF 结尾转换为 CRLF:

$ git config --global core.autocrlf true 如果你在使用 LF 行尾的 Linux 或 macOS 系统上,那么你不希望 Git 在检出文件时自动转换它们;但是,如果意外引入了带有 CRLF 结尾的文件,那么您可能需要 Git 修复它。您可以通过将 core.autocrlf 设置为输入来告诉 Git 在提交时将 CRLF 转换为 LF,而不是相反:

$ git config --global core.autocrlf input 这个设置应该让你在 Windows 结账中使用 CRLF 结尾,但在 macOS 和 Linux 系统以及存储库中使用 LF 结尾。

这是有道理的,但我仍然不清楚这些文件是如何在 repo 中实际提交的。例如,如果他在他的系统上创建一个文件,它会有所有的LF行结尾,对吗?因此,当他提交时,我认为这些行结尾保持原样。据我所知,当我拉动时,我的autocrlf存在true会用CRLF行尾检查它们。(我收到警告warning: …

windows git merge line-endings git-merge

5
推荐指数
2
解决办法
2050
查看次数