如何使用git丢弃暂存文件?

时间:2019-05-20 12:47:27

标签: git

我有一堆上演的变更和一堆未上演的变更。是否存在git命令来完全协调所有我已分阶段执行的更改,同时保持我未分阶段进行的更改?

我不希望已存在分阶段的更改。我只希望他们离开这个世界,但我想保持我的未分级更改不变。

3 个答案:

答案 0 :(得分:3)

假设已进行的阶段性更改和未进行的非阶段性更改都没有冲突,

这是实现此目标的方法:

git stash save --keep-index
git reset --hard
git stash pop

第一个命令[使用--keep-index存储]将仅存储未暂存的文件。 Second [reset --hard]将摆脱所有现有更改(现在仅包括暂存文件)。第三个[stash pop]将隐藏以前未暂存的文件。

替代方法可以是: 提交暂存的文件,隐藏剩余的更改,删除顶部的提交,弹出隐藏的更改。如下所示:

git commit -m "temp commit"
git stash
git reset --hard HEAD~1
git stash pop

答案 1 :(得分:1)

最简单的解决方案-不涉及创建tmp提交(git stash实际上也创建tmp提交):

首先,在索引HEAD提交之间创建补丁,并保存到tmp文件:

git diff --cached -R > ~/tmp.patch

注意-R选项可以反转差异的方向。

第二,重置索引

git reset

最后,将补丁应用到工作目录

git apply ~/tmp.patch

答案 2 :(得分:0)

要取消暂存所有文件(请参阅注释:不是OP想要的)

git reset

(如果没有提供参考,则暗示{HEAD

您的本地更改将保留,但索引(暂存区)将被清除。