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


当前回答

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

# 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 重新设置时不会坐在那里(后来 - 排除 gitignores 在 起源 / 品牌名称)

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

git add --all

然后我

git fetch --all

然后我回到起源。

git reset --hard origin/branchname

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

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

git reset --hard @{u}

如果您只是想删除现有文件的更改,请使用支票(文档在这里)。

git checkout -- .

没有分支是指定的,所以它检查了当前分支. 双希芬(--)告诉Git,接下来的应该作为其第二个论点(路),你错过了一个分支的规格。

如果您想要从您的最后订单中删除添加的文件,请使用清洁(文档在这里):

git clean -i 

选项 -i 启动一个互动清洁,以防止错误的删除。 还有许多其他选项可用于更快的执行; 查看文档。

如果您想将更改转移到持有空间以获得后续访问,请使用 stash (在这里文档):

git stash

所有更改将转移到 Git 的 Stash,以便随后访问。 有几个选项可用于更色彩的 Stash; 查看文档。

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

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 clean -dxn .  # dry-run to inspect the list of files-to-be-removed
git clean -dxf .  # REMOVE ignored/untracked files (in the current directory)
git checkout -- . # ERASE changes in tracked files (in the current directory)

以下是使用的 git 清洁选项的在线帮助文本:

D

除未追踪的目录外,除未追踪的文件外,除未追踪的目录外,除未追踪的目录外,除非由另一个 Git 存储库管理,则不会默认删除。

x

不要使用从.gitignore (每个目录) 和 $GIT_DIR/info/exclude 阅读的默认忽略规则,但仍然使用与 -e 选项提供的忽略规则. 这允许删除所有未追踪的文件,包括构建产品。

N

实际上不要删除任何东西,只是显示会做什么。

F

如果 Git 配置变量 clean.requireForce 不被设置为虚假, Git clean 将拒绝删除文件或目录,除非 -f、 -n 或 -i. Git 将拒绝删除.git 子目录或文件中的目录,除非另一个 -f 被提供。

您可以创建自己的标签,描述如何以描述的方式进行。

我用下一个字符来排除变化。


排除工作树中的一个(列表)文件(s)中的变化

discard = checkout --

然后,你可以使用它作为附加,以排除所有变更:

discard .

或者只是一个文件:

discard filename

否则,如果你想删除所有的更改,以及未追踪的文件,我使用一个混合的检查和清洁:

清理和排除工作树中的变更和未追踪文件

cleanout = !git clean -df && git checkout -- .

所以使用是简单的如下:

cleanout

现在在下一个GitHub repo中可用,其中包含许多联盟:

HTTPS://github.com/GitAlias/吉塔利亚