使Git忽略';文件末尾没有换行符';承诺时

使Git忽略';文件末尾没有换行符';承诺时,git,newline,Git,Newline,我正在研究将被集成到原始回购协议中的bug,很多文件的末尾没有换行符 有没有办法让Git忽略这一点,并允许我在不显示的情况下进行提交 我知道使用git diff可以执行——忽略eof处的空格来隐藏它,但是当我执行git add时,如何实现这一点呢 文件需要提交和推送,而无需向文件中添加换行符,也不需要在提交结束时显示需要换行符 我知道文件中没有添加换行符,但我需要一种方法来抑制“文件末尾没有换行符”的警告消息 需要提交和推送文件,而不向文件中添加换行符,也不需要提交命令在末尾添加换行符 “文件末

我正在研究将被集成到原始回购协议中的bug,很多文件的末尾没有换行符

有没有办法让Git忽略这一点,并允许我在不显示的情况下进行提交

我知道使用git diff可以执行
——忽略eof处的空格来隐藏它,但是当我执行
git add
时,如何实现这一点呢

文件需要提交和推送,而无需向文件中添加换行符,也不需要在提交结束时显示需要换行符

我知道文件中没有添加换行符,但我需要一种方法来抑制“文件末尾没有换行符”的警告消息

需要提交和推送文件,而不向文件中添加换行符,也不需要提交命令在末尾添加换行符

“文件末尾没有换行符”消息只是一个警告。此消息不会阻止用户提交

实际上,下面的代码就是这样做的。创建文件时不使用换行符(使用
-n
选项)。文件被暂存,然后提交。然后,修改相同的文件,仍然不添加换行符,并进行新的提交

$ cd /d/temp
$ mkdir test && cd test
$ git init .
Initialized empty Git repository in d:/temp/test/.git/

$ echo -n test > file.txt # Create a file without a trailing newline 
$ git add .
$ git commit -m "Initial commit"
[master (root-commit) b99fc8b] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 file.txt

$ echo -n ing... >> file.txt # Append some text to the same file (still without a newline)
$ git add .
$ git commit -m "Fixing bug without adding a trailing newline"
[master f0be668] Fixing bug without adding a trailing newline
 1 file changed, 1 insertion(+), 1 deletion(-)
浏览一下最新的提交,就会发现流程中没有添加换行符

$ git show HEAD
commit f0be6684dafa85384984e7a725c2fa854183d1d0
Author: nulltoken <who@where.com>
Date:   Sat Oct 5 12:32:08 2013 +0200

    Fixing bug without adding a trailing newline

diff --git a/file.txt b/file.txt
index 30d74d2..2ae6cf4 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1 @@
-test
\ No newline at end of file
+testing...
\ No newline at end of file
$git显示头
提交f0be6684dafa85384984e7a725c2fa854183d1d0
作者:nulltoken
日期:星期六2013年10月5日12:32:08+0200
在不添加尾随换行符的情况下修复错误
diff——git a/file.txt b/file.txt
索引30d74d2..2ae6cf4 100644
---a/file.txt
+++b/file.txt
@@ -1 +1 @@
-试验
\文件末尾没有换行符
+测试。。。
\文件末尾没有换行符

所以Git不会自动为您添加换行符。然而,如果您看到这种情况发生,则很有可能是IDE或文本编辑器在保存文件之前为您完成了这项工作。在这种情况下,请浏览选项并进行相应的更改。

我想我现在明白了,这只是一个警告。我想有没有办法抑制该警告,使其不显示?@Henesnarfel我还没有发现任何.git是二进制的,但它将文本输出显示为文本。换行符没有简单的方法可以在文本中很好地表示出来,同时也不会让用户感到困惑。从技术上讲,git的输出会打印一个换行符——但如果没有警告,那么换行符是否在实际文本中就不明确了。这是最不含糊的表达方式。