我有一些在git中没有跟踪的文件。我做了一些更改并希望提交它们,但意识到我忘记了先检查未修改的文件。所以我隐藏了文件,然后添加了未修改的版本。
然后,当我将存储应用于存储库时,由于已经添加了文件,我会收到冲突。
如何应用存储,并强制使用存储库中的版本优先于存储库中的原件?
由于
答案 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