首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除“未暂存提交的更改”?在git中

如何删除“未暂存提交的更改”?在git中
EN

Stack Overflow用户
提问于 2013-01-04 07:58:05
回答 2查看 3.4K关注 0票数 5

当我做“git status”时,我会得到

代码语言:javascript
复制
% 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',‘之后,我发现得到的结果是一样的:

代码语言:javascript
复制
% 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

代码语言:javascript
复制
% 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="&quot;$(DXSDK_DIR)\Include&quot;"
- />
-  <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="&quot;$(DXSDK_DIR)\Include&quot;"
+       />
+  <Tool
+               Name="VCLinkerTool"
+               AdditionalLibraryDirectories="$(DXSDK_DIR)\Lib\x86"
+       />
 </VisualStudioPropertySheet>
\ No newline at end of file
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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不会执行行尾调整。(如果您与不使用同一平台的其他人一起开发,这可能会产生非常负面的后果。)

票数 9
EN

Stack Overflow用户

发布于 2016-09-13 11:01:09

我只想补充一下@cdhowie的回答。

我遇到了与操作员相同的问题。

验证窗口行结束的最佳方法不是通过vim,而是通过od

代码语言:javascript
复制
od -xcb foo.txt | tail

Windows行尾应如下所示:

代码语言:javascript
复制
\r \n

要轻松获取所有受影响的文件并将其转换为unix (在我的示例中),需要执行以下操作:

代码语言:javascript
复制
git ls-files -m | xargs dos2unix
dos2unix: converting file foo.txt to Unix format ...
dos2unix: converting file moo.txt to Unix format ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14149216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档