如何在我的工作副本中排除非指数的变更?


当前回答

下面实际上只是一个解决方案,如果你正在与一个存储库的福克工作,在那里你经常同步(例如拖请求)与另一个复制。

我有一个类似的问题,也许不是相同的,我很遗憾地说我的解决方案不是理想的,但它最终是有效的。

我会经常有 git 状态消息如下(包含至少 2/4 文件):

$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2var.dats
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2var.dats
#
# 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:   doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2Var.dats
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2Var.dats

一个激动人心的眼睛会注意到,这些文件有双重的,这是一个单一的字母的情况下. 某种方式,我不知道什么导致我下这个路径开始(因为我没有工作这些文件自己从上流的repo),我已经转换了这些文件. 试试这个页面上列出的许多解决方案(和其他页面)似乎没有帮助。

其他回答

我有一個奇怪的情況,在那裡一個檔案總是無關,這有助於我解決。

git rm.gitattributes git add -A git reset --hard

我真的觉得这篇文章有用来解释什么时候使用什么命令: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

有几个不同的案例:

如果您没有下载文件,则使用 git checkout. Checkout “更新工作树中的文件以匹配指数中的版本”。 如果文件没有下载(因此添加到指数)... 这个命令将基本上将文件转换为您最后的承诺。

我怀疑使用 git stash 是很受欢迎的选择,因为它有点不那么危险. 你总是可以回到它,如果你偶然在使用 git reset 时跳过太远。

请参见上面的文章以获得更多建议。

最简单的方式是使用这个命令:

此命令用于排除工作目录的变更 -

git checkout -- .

首頁 〉外文書 〉文學 〉文學 〉HTTPS://git-scm.com/docs/git-checkout

在 git 命令中,未追踪文件的存储是通过使用:

git stash -u

HTTP://git-scm.com/docs/git-stash

2019年更新

您现在可以在一个跟踪文件中删除未完成的更改,使用:

git restore <file>

在当前目录中的所有跟踪文件中(重复)与:

git restore .

如果您将后者从存储库的根中运行,则将删除项目中的所有跟踪文件中的未进行的更改。

笔记

git restore 于 2019 年 7 月推出,并在 2.23 版本中发布,作为 git checkout 命令分成 git restore 文件和 git switch 分支的部分。 git checkout 仍然按照它所使用的方式行事,而旧的答案仍然是完美的。

git clean -df

清理工作树,重复删除不受版本控制的文件,从当前目录开始。

D:除了未追踪的文件之外,还可以删除未追踪的目录

-f: 力量(可能不需要根据 clean.requireForce 设置)

Run git help clean 查看手册