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


当前回答

git checkout .

这将拒绝对分支的任何未经订购的变更,如果发生任何变更,它不会重新设置它,这是方便的,当你做了一些变更并决定你不想要它们,因为某种原因,你没有承诺这些变更,它实际上只是重新检查分支,并拒绝任何当前未经订购的变更。

(必須在應用程式的根或家指,以便工作)

其他回答

如果您想恢复未完成的文件,请使用 git restore --staged。

另一种方法来摆脱新的文件,比 git 清洁 -df 更具体(它将允许你摆脱一些文件不一定全部),是将新文件添加到指数,然后插入,然后放下插入。

这种技术是有用的,因为某种原因,你不能轻松地通过某种普通的机制(如rm)删除所有未追踪的文件。

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

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

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

git add --all

然后我

git fetch --all

然后我回到起源。

git reset --hard origin/branchname

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

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

git reset --hard @{u}

另一种更快的方式是:

git stash save --keep-index --include-untracked

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

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

你可以使用 git stash - 如果有什么不对劲,你仍然可以从 stash 返回。 类似于这里的一些其他答案,但这个也删除所有未输入的文件,以及所有未输入的删除:

git add .
git stash

如果你检查一切都没事,请放下:

git stash drop

比拉尔·马克索德(Bilal Maqsood)与吉特清洁的答案也为我工作了,但我有更多的控制权 - 如果我偶然做STH,我仍然可以恢复我的变化

更新

我认为还有1个变化(我不知道为什么这对我以前工作):

git add. - A 而不是 git add.

没有 -A 删除的文件将不会复制