如何在git中删除未暂存的更改[换行符差异]?

6

这真让人沮丧,我找不到正确的答案来处理这个问题。我需要进行一次变基(但这只是许多情况之一),并且有大量的文件“已更改但未更新”,它们除了换行字符外没有任何区别。

git diff -b

没有返回任何内容。

现在我只想撤销更改,让文件保持与存储库中的原样。 我找到了很多“解决方案”:

1. 保存更改
a) 使用--keep-index选项[这实际上来自SO]

$ git stash save --keep-index
Saved working directory and index state WIP on COM-23: 4a8abc1 COM-23 changed pa
ckage name
HEAD is now at 4a8abc1 COM-23 changed package name

$ git stash drop
Dropped refs/stash@{0} (7d822e3c6bdc310f4a4be90ed937dd0ea97df627)

$ git status
[tons of files marked as changed but not updated]

b) 如果没有使用--keep-index参数,和'a'参数的效果完全一样。

2 git reset
a) 只是一个重置。

git reset --hard HEAD

与上述相同

b) 使用添加功能

git add -A
git reset --hard HEAD

同上
3结账
git checkout

与上面相同,状态返回了许多未暂存的文件。

我很确定我做错了什么或者只是误解了问题,但我想要做的就是摆脱这些未暂存的更改!我该怎么做?

谢谢, Krystian


4
请查看 git config core.autocrlf。最好将其设置为 false。更改该值后,您可能仍需要执行 git reset --hard,因为您需要将编辑器的换行符设置与 Git 的设置同步。 - Ionuț G. Stan
就是这样!把它作为答案,我会很高兴地标记它,因为我相信我不是唯一一个遇到这个配置项损坏的人! - Krystian
2个回答

10

请查看git config [--global] core.autocrlf。最好将其设置为false。更改该值后,您可能仍需要执行git reset --hard,因为您需要将编辑器换行符设置与Git的换行符设置同步。


0

当您想记录工作目录和索引的当前状态,但希望返回到干净的工作目录时,请使用git stash。该命令将保存您的本地修改并将工作目录还原为与HEAD提交匹配的状态。

请按照以下步骤操作。

git stash save --keep-index

如果你想完全删除这些更改,那么就放弃存储

git stash drop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接