9

我希望能够使用 Github for Windows 应用程序以及使用 Cygwin(在 Windows 上)的命令行中的 git 来处理我的 git 项目。

但是当我从一个切换到另一个时,我不断遇到行尾问题。

如果使用命令行工具,repo 没有任何更改,它将希望使用 Github 应用程序修改所有文件。如果我使用 Github 应用程序进行更改,它将再次希望使用命令行工具进行更改。

经过大量测试后,我无法使其适用于这两种工具。

什么会让它发挥作用?在我目前设置的 .gitatributes 中: * text=auto 但这没有帮助

4

3 回答 3

5

这是一个 GHfW 错误,当您的存储库配置和存储库中的数据不一致时会发生。

如果您将文件配置为转换为 CRLF 行结尾 - 例如,通过设置core.autocrlftrue,但您的存储库中有已经采用 CRLF 格式的 blob(可能是因为有人尚未设置core.autocrlf为 true),则可能会出现此问题。

在这种情况下,GHfW 翻译存储库中的 CRLF 与 msysgit 不同。结果,一些或所有文件看起来很脏。

我建议在整个团队中对您的 CRLF 采用一致的方法,以避免 git 工具在他们应该如何处理您的行尾时产生任何歧义。也就是说,这个错误最近在 libgit2 中得到修复,这是 GHfW 的基础库,应该很快就会进入 GHfW。

于 2013-03-30T13:34:06.353 回答
4

Working on both Git Bash and Cygwin in Windows is going to make git confuse. That is:

  • clone/checkout a repo under Git Bash. During checking out, git thinks it's on Windows, so usually it uses CRLF to check out text files.
  • run git in Cygwin, git thinks it's on Linux and that repo had been checked out in Linux(which is actually not, according to the previous step). Therefore, when git sees CRLF in Cygwin, it thinks that LF is modified into CRLF so that git reports a lots files changes.

One way to fix this is to create .gitattributes file in repo's root and add lines like the following:

*.txt text eol=lf

It tell git when encounter file with suffix .txt, using LF both when writing into "database(.git)" and checking out into working directory.

reference here

于 2015-04-10T03:00:20.543 回答
1

我使用 GitHub 2.7.0.24 在我的 Windows 上克隆了一个存储库(包含带有 CRLF 的文件)。然后我想在上面使用我的cygwin的git版本2.1.4。

I edited .git/config by adding "autocrlf=true" under the [core] section. (With a real tabulation before "autocrlf=true")

Now cygwin's git says I'm up to date with no modifications.

I keep the CRLF on the files because they were created that way on the original repository.

I will not use the GitHub application anymore...

I noticed the merge conflicts are adding <<<< ==== >>>> lines with no CR, but they will be deleted when I resolve the conflicts.

于 2015-01-29T01:59:33.940 回答