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


当前回答

要做永久漏洞: git reset --hard

保存更改以后: git stash

其他回答

要删除未完成的更改,我试图“吉特恢复”我被吉特告诉,但它只是没有工作。

git revert --hard

它的 Git Help 完美地解释了这一点:

--hard 恢复指数和工作树. 在工作树中跟踪文件的任何变化,因为它们被删除. 在写任何跟踪文件的方式,任何未跟踪文件或目录都被删除。

PS:我使用 git 版本 2.35.3.windows.1. 我认为这里的一些答案使问题过于复杂。

只用:

git stash -k -u

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

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

我最喜欢的是

git checkout -p

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

也看:

git add -p

对于当前工作目录使用中的所有未输入的文件:

git restore .

对于特定文件的使用:

git restore path/to/file/to/revert

这与 git 交换器一起取代了过度加载的 git 支票(见这里),从而取消了论点的分歧。

如果一个文件既有步骤和未步骤的变化,则仅在 git diff 中显示的未步骤的变化将被转换。

之前 Git 2.23

对于当前工作目录中的所有未输入的文件:

git checkout -- .

对于一个特定的文件:

git checkout -- path/to/file/to/revert

在这里消除双重性(这被称为论点不双重性)。

而不是放弃更改,我将我的远程重新设置到原始。 注意 - 这个方法是完全恢复您的文件夹到复制文件夹。

所以我这样做是为了确保他们在我 git 重新设置时不会坐在那里(后来 - 排除 gitignores 在 起源 / 品牌名称)

注意: 如果您想要保持尚未跟踪的文件,但不在 GITIGNORE 您可能希望错过此步骤,因为它将删除这些未跟踪的文件未在您的远程存储库中找到(感谢 @XtrmJosh)。

git add --all

然后我

git fetch --all

然后我回到起源。

git reset --hard origin/branchname

就像 RE-Cloning 分支, WHILE 保持所有我的 gitignored 文件在本地和地点。

按下面的用户评论更新: 变量重新设置到用户目前的任何分支。

git reset --hard @{u}