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


当前回答

如果所有的步骤文件实际上已经完成,那么分支可以简单地重新设置,例如从您的GUI,大约有三个鼠标点击:分支,重新设置,是的!

因此,我经常在实践中做的事情,以逆转不需要的地方变化,就是承诺所有的好事,然后重新设置分支。

如果好事是在单一的承诺中承诺,那么你可以使用“修改最后的承诺”将其带回被推翻或不推翻,如果你最终想承诺它有点不同。

这可能不是你正在寻找问题的技术解决方案,但我认为这是一个非常实用的解决方案. 它允许你选择性地排除未完成的变化,重新调整你不喜欢的变化,并保持你所做的变化。

因此,简而言之,我只是承诺,分支重新设置,并修改最后的承诺。

其他回答

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

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

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

git add --all

然后我

git fetch --all

然后我回到起源。

git reset --hard origin/branchname

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

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

git reset --hard @{u}

如果您处于子模块的情况下,没有其他解决方案工作,请尝试:

查看问题是什么(可能是一个“脏”案例)使用: git diff 删除 stash git 子模块更新

当你想将一个字符转移到另一个人时:

# add files
git add .  
# diff all the changes to a file
git diff --staged > ~/mijn-fix.diff
# remove local changes 
git reset && git checkout .
# (later you can re-apply the diff:)
git apply ~/mijn-fix.diff

[编辑] 如评论,可以命名 stashes. 好吧,如果你想分享你的 stash ;)

我最喜欢的是

git checkout -p

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

也看:

git add -p

尝试了上面的所有解决方案,但仍然无法摆脱新的,未完成的文件。

使用 git clean -f 删除这些新文件 - 但是要小心! 注意力选项。