在提交时让Git忽略“文件末尾没有换行符”

时间:2013-10-04 18:57:34

标签: git newline

我正在处理将被集成到原始仓库中的错误,并且很多文件在文件末尾没有换行符。

有没有办法让Git忽略这一点并允许我在没有出现的情况下进行提交?

我知道使用git diff你可以--ignore-space-at-eof来隐藏它,但是当我执行git add时如何才能实现这一点?

需要提交和推送文件而不向文件添加换行符,也不要让提交在最后显示需要换行符。

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

1 个答案:

答案 0 :(得分:2)

  

需要提交和推送文件而不向文件添加换行符,也不要让提交在最后添加换行符。

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

确实,下面的代码就是这样做的。创建的文件没有换行符(-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 不会自动为您添加换行符。但是,如果您发现这种情况,则在保存文件之前,您的IDE或文本编辑器很可能会为您执行此操作。在这种情况下,浏览选项并进行适当的更改。