当我做“git status”时,我会得到
% git status
# Not currently on any branch.
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops
# modified: Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops但是在我做了'% git checkout -- Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops',‘之后,我发现得到的结果是一样的:
% git checkout -- Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops
% git status
# Not currently on any branch.
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops
# modified: Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops
#如何删除这些“未暂存提交的更改”?
我甚至尝试过'git stash',仍然有一些这些变化是如何保留下来的。
我做了一个“git diff”。这就是结果,我没有看到^M:我已经查看了'.gitconfig',我没有'autoctrl
% git diff
diff --git a/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops b/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops
index 2ea7a51..9643739 100644
--- a/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops
+++ b/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitApple"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CFNetwork$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib QTMovieWin$(WebKitConfigSuffix).lib WebKitSystemInterface$(WebKitConfigSuffix).lib"
- DelayLoadDLLs="QTMovieWin$(WebKitConfigSuffix).dll"
- />
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="WebKitApple"
+ >
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="CFNetwork$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib QTMovieWin$(WebKitConfigSuffix).lib WebKitSystemInterface$(WebKitConfigSuffix).lib"
+ DelayLoadDLLs="QTMovieWin$(WebKitConfigSuffix).dll"
+ />
</VisualStudioPropertySheet>
\ No newline at end of file
diff --git a/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops b/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops
index 797b4cb..c95c87d 100644
--- a/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops
+++ b/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitDirectX"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(DXSDK_DIR)\Include""
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="$(DXSDK_DIR)\Lib\x86"
- />
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="WebKitDirectX"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(DXSDK_DIR)\Include""
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories="$(DXSDK_DIR)\Lib\x86"
+ />
</VisualStudioPropertySheet>
\ No newline at end of file发布于 2013-01-04 08:01:51
听起来您使用的是core.autocrlf选项。可能发生的情况是,存储库中的文件具有CRLF行结尾,但由于设置了此选项,Git认为该文件在存储库中应该具有LF行结尾。当您签出文件时,您将获得工作目录中具有平台本机行结尾的文件(在Windows上为CRLF,在Unixes上为LF,等等)。
作为git status操作的一部分,Git正在将这些转换回LF。如果HEAD版本中的文件作为CRLF结尾存储在Git中,这就解释了为什么Git仍然认为这两个版本是不同的,即使您从索引中签出了版本。
检测这种情况的最直接方法是从终端运行git diff,它会将CR字符显示为^M。
要解决这种情况,您可以只提交文件(带有一些消息,如“标准化行尾”),或者您可以完全禁用core.autocrlf,这意味着文件将按原样存储在存储库中,Git不会执行行尾调整。(如果您与不使用同一平台的其他人一起开发,这可能会产生非常负面的后果。)
发布于 2016-09-13 11:01:09
我只想补充一下@cdhowie的回答。
我遇到了与操作员相同的问题。
验证窗口行结束的最佳方法不是通过vim,而是通过od。
od -xcb foo.txt | tailWindows行尾应如下所示:
\r \n要轻松获取所有受影响的文件并将其转换为unix (在我的示例中),需要执行以下操作:
git ls-files -m | xargs dos2unix
dos2unix: converting file foo.txt to Unix format ...
dos2unix: converting file moo.txt to Unix format ...https://stackoverflow.com/questions/14149216
复制相似问题