如何查看git存储库中已存在哪种类型的行结尾?

Iva*_*ara 14 git version-control github line-endings bitbucket

首先,我不是在问它是什么意思或者如何改变它.我最感兴趣的是:我怎样才能看到已经存在的回购?什么类型的行结尾.

我在github和bitbucket上有我的存储库.

感谢帮助

Fla*_*ien 62

您可以使用此命令:

git ls-files --eol
Run Code Online (Sandbox Code Playgroud)

它将为每个文件输出一行,并包含以下信息:

i/lf    w/crlf  attr/text=auto eol=lf   file.txt
Run Code Online (Sandbox Code Playgroud)

在该示例中,i/lf表示该文件lf在索引中使用,表示它在工作目录中w/crlf使用。crlf

  • 索引是否反映存储库中存储的内容? (3认同)

Tre*_*ntP 10

要了解存储库中文件使用的行结尾,请使用git show提取文件的内容。这将为您提供内容而不更改行尾

如果您要查看本地工作目录中的文件,就像在其他答案之一中一样,那只会告诉您签出的工作目录中的行结尾。Git 可以,并且在 Windows 上通常会在检出文件时更改行尾,并在提交时撤消更改。因此,即使存储库中的数据使用 LF,您也会在工作目录中看到 CR-LF。

使用git showgit cat-file -p将绕过此转换。

git show 的输出可以通过管道传输到文件,让它自动检测行结束类型。前任:

git show HEAD:file.c | file -
/dev/stdin: ASCII text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)

您可以将修订版更改HEAD为其他内容,以查看旧修订版的行尾。例如,查看它们是否已更改。


Chr*_*ris 5

行尾是文件的属性,而不是存储库(从技术上讲,它们甚至可以混合在同一个文件中)。要查看特定文件的行尾类型,您可以使用类似fileLinux 系统上的命令(它也应该适用于 OSX):

$ file some-file.txt
some-file.txt: ASCII text
Run Code Online (Sandbox Code Playgroud)

这表明行尾与系统默认值匹配,因此在我的情况下它将是 unix 行尾。Windows 行结尾将显示如下:

$ file some-file.txt
some-file.txt: ASCII text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)

或者,在合适的文本编辑器中打开文件。大多数人都会有办法向您展示行尾样式。例如,Emacs 显示

U(DOS)
Run Code Online (Sandbox Code Playgroud)

在上面第二个示例的模式行中,指示 CRLF(“DOS”)行结尾。大多数其他编辑器都会有类似的东西。

如果要查看core.autocrlf特定存储库的设置,请在其中运行git config core.autocrlf。您将取回它设置的值,如果未设置,则什么也没有。这些设置是存储库本地的(即不与 GitHub、Bitbucket 或其他用户的本地副本共享)。

您可能还想检查存储库的.gitattributes.git/info/attributesfiles(如果存在)。前者作为常规文件存储在存储库中,因此会与其他人共享,后者特定于您的本地存储库。

  • 警告:在克隆 repo 之前,您必须拥有 `core.autocrlf = false`。否则,您的本地文件可能与远程存储库中的实际文件不匹配。 (3认同)
  • 行尾是 git 中的元数据。“gitattributes”为存储库中的文件存储“eol”属性等。该属性是有关文件的数据,而不是文件本身的数据。这就是元数据。没有大写或小写的属性,git 也不会在签入或签出时转换文件的大小写,因此不具有可比性。 (2认同)

小智 5

将存储库源代码下载为.zip文件。启用后,使用记事本++检查文件:

View->Show Symbol->Show End Of Line setting
Run Code Online (Sandbox Code Playgroud)