【问题标题】:How to force discarding ALL my unstaged changes in Git如何强制丢弃我在 Git 中的所有未暂存更改
【发布时间】:2016-12-23 08:46:29
【问题描述】:

如何删除“未为提交暂存的更改:”下的项目。我在这方面发现了许多其他票,但实际上没有一张对我有用。

发生了什么?

我检查了开发分支。但是在我编辑了一些本地文件后,这些文件卡在了 Unstaged 列表中。根本不能stashcleanrm 甚至reset --hard 他们。当我试图通过检查 origin/mybranch 然后尝试从那里重置来删除我的本地更改时,问题就发生了。

我现在有一个过时的分支。每次我这样做:

git fetch origin
git reset --hard origin/mybranch

未分级的更改仍然存在。

modified : *.xlsx

我可以强制删除这些本地更改吗?似乎唯一的解决方案是再次克隆一个干净的修订版,但我正在尝试先修复它。

【问题讨论】:

  • git status 的输出是什么?
  • @akuhn modified : * modified : * modified : * 每次我点击时,本地修改的文件都仍然列出:git status

标签: git branch git-branch


【解决方案1】:

试试:

git checkout .

'.'用于表示您想用原始版本中存在的版本替换所有文件。

【讨论】:

  • 我已经在 mybranch 和 origin 中尝试过。没用。 git 一直告诉我,我已经了解了 origin/mybranch 的最新信息,但仍然列出了未暂存的更改。我试过了: git checkout -- .
【解决方案2】:

可以使用以下命令“删除”未暂存的更改:

git checkout -- <filename>

或者,如果要删除所有更改,可以使用.

git checkout -- .

这应该足以删除“未暂存的更改”下的项目。

【讨论】:

  • 它不会删除未暂存的更改或在这种情况下有任何影响,我不知道为什么。当我重置 brahc --hard 以匹配最新的获取来源时,我不明白 git;它告诉我 mybranch 与 origin/mybranch 是最新的 .. 但仍然列出了未暂存的更改以及我何时执行 git add 。 --dry-run ...我看到所有这些更改仍然存在并准备好上演和提交。
【解决方案3】:

如果您更改的这些文件位于跟踪目录中,并且您希望将它们从项目中永久排除,则需要将它们添加到存储库的 .gitignore 文件中。

【讨论】:

    【解决方案4】:

    所以这个问题只发生在 .xlsx 文件中,因为每次 Excel 打开它都会创建一个隐藏文件 $.xlsx。显然与其他办公文档文件相同的问题。如果我通过以下方式添加更改:

    git add . 
    

    它甚至会盲目地添加隐藏文件 $*.xlsx 。因此,在我关闭文件后,它会自动从系统中删除,但不会从 git 中删除,因为它已经添加了,git 仍然可以看到它并且无法忽略它,甚至无法删除它,因为它没有被跟踪。

    对我有用的是,我打开了 excel 文件,添加,然后毫无问题地提交。之后我可以像任何其他文件一样删除。

    【讨论】:

      猜你喜欢
      • 2016-10-28
      • 2020-06-01
      • 2013-11-30
      相关资源
      最近更新 更多