强制git stash覆盖添加的文件

时间:2013-05-17 09:53:57

标签: git

我有一些在git中没有跟踪的文件。我做了一些更改并希望提交它们,但意识到我忘记了先检查未修改的文件。所以我隐藏了文件,然后添加了未修改的版本。

然后,当我将存储应用于存储库时,由于已经添加了文件,我会收到冲突。

如何应用存储,并强制使用存储库中的版本优先于存储库中的原件?

由于

6 个答案:

答案 0 :(得分:271)

使用git checkout代替git stash apply

$ git checkout stash -- .
$ git commit

这会将当前目录中的所有文件恢复为其存储版本。


如果工作目录中的其他文件发生了应该保留的变化,那么这是一个不那么苛刻的选择:

$ git merge --squash --strategy-option=theirs stash

如果索引中有更改,或者合并将触及具有本地更改的文件,git将拒绝合并。可以使用

从藏匿处检出单个文件
$ git checkout stash -- <paths...>

或与

互动
$ git checkout -p stash

答案 1 :(得分:4)

git stash show -p | git apply

,然后git stash drop,如果您想放下藏起来的物品。

答案 2 :(得分:1)

TL; DR:

git checkout HEAD path/to/file
git stash apply

长版:

由于要覆盖的未提交更改而出现此错误。使用git checkout HEAD撤消这些更改。您可以使用git checkout HEAD path/to/file撤消对特定文件的更改。消除冲突原因后,您可以照常申请。

答案 3 :(得分:0)

要强制git stash pop运行此命令

git stash show -p | git apply && git stash drop

答案 4 :(得分:0)

我删除并重新关闭了工作空间以解决此问题。

答案 5 :(得分:0)

保留本地源备份,然后应用强制重置以与 GIT 存储库保持一致。然后更改您的本地代码并提交。

<块引用>

git reset --hard FETCH_HEAD