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


当前回答

只用:

git stash -k -u

这将阻止未跟踪的变更和未跟踪的文件(新文件)并保持未跟踪的文件。

它比重新设置/检查/清洁更好,因为你可能希望他们后来回来(由 git stash pop)。

其他回答

我最喜欢的是

git checkout -p

这使你能够选择性地逆转碎片。

也看:

git add -p

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

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

我会经常有 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 stash save --keep-index --include-untracked

你不需要包含 - 包括 - 不被吸引,如果你不想仔细了解它。

接下来,你可以用 git stash drop 命令放下这个 stash 如果你愿意。

要排除工作目录中的变化,使用 git checkout -- <file> -- 意味着当前分支参考的变化:-

https://www.baeldung.com/git-discard-unstaged-变更

cd path_to_project_folder  # take you to your project folder/working directory 
git checkout .             # removes all unstaged changes in working directory