为什么 git stash pop 说它无法从存储条目恢复未跟踪的文件?

2024-03-25

我有很多分阶段和未分阶段的更改,我想快速切换到另一个分支,然后再切换回来。

所以我使用以下方法进行了更改:

$ git stash push -a

(事后看来我可能可以使用--include-untracked代替--all)

然后,当我去弹出存储时,我收到了很多错误,大致如下:

$ git stash pop
foo.txt already exists, no checkout
bar.txt already exists, no checkout
...
Could not restore untracked files from stash entry

似乎没有从存储中恢复任何更改。

我也尝试过$ git stash branch temp但这显示了相同的错误。

我确实找到了解决这个问题的方法,那就是使用:

$ git stash show -p | git apply

灾难暂时避免了,但这引发了一些问题。

为什么首先会发生此错误以及下次如何避免它?


我设法重现了您的问题。似乎如果您隐藏未跟踪的文件,然后创建这些文件(在您的示例中,foo.txt and bar.txt),那么您对未跟踪的文件进行了本地更改,这些更改在您应用时将被覆盖git stash pop.

要解决此问题,您可以使用以下命令。这会覆盖任何未保存的本地更改所以要小心。

git checkout stash -- .

这是我在上一个命令中找到的一些进一步信息 https://stackoverflow.com/questions/16606203/force-git-stash-to-overwrite-added-files.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 git stash pop 说它无法从存储条目恢复未跟踪的文件? 的相关文章

  • 如何在git中标记多个提交

    我想为多个提交 合并分支 创建一个标签 我们可以将多个提交分组到一个标签中吗 请帮助我 你想做的事是不可能的 标签就像分支一样 最多只能指向一次提交
  • Eslint 如何只更改代码行

    我需要一种方法来仅在分支上已更改的代码行或块上运行 ESLint 我们的想法是 我们有一个庞大的旧代码库 我们希望强制执行 ESLint 规则at least向前进 我在 CI 中实现了它 对 PR 中更改的所有文件进行了检查 但是人们在接
  • git stash apply 和 git stash apply --index 有什么区别?

    每当我跑步时git stash apply and git stash apply index完成后git stash a即使我的 WIP 目录有暂存的更改 未暂存的 但跟踪的更改 和未跟踪的文件 我也会得到相同的结果 这是正常的吗 不应该
  • Git 日志列表提交不包括从第一个分支中精心挑选的内容

    例如我有这个提交历史记录 让我们说在某个时刻release1几天后发布到生产环境 release2分支被释放 branch relase1包含从 master 精心挑选的 2 个提交 4 和 5 branch release2包含 2 个提
  • 从 JSON 模式动态创建表单 [Angular 8]

    我正在努力从 Angular 8 中的 JSON Schema 创建动态表单 我找到了一些库 但是一个很旧 https github com dschnelldavis angular2 json schema form 上次提交约 2 年
  • 在 Windows 上忽略 Git 存储库中的目录

    如何在 Windows 上使用 msysgit 忽略 Git 中的目录或文件夹 创建一个名为 gitignore在您的项目目录中 通过在文件中输入目录名称 附加斜杠 来忽略目录 dir to ignore 更多信息是here http gi
  • git-svn rebase 出了严重错误

    有没有办法重做 git svn rebase 或重置任何效果 在我的 8000 提交 git svn 存储库中 合并分支后出现问题 我的本地 master 没有反映任何接近完整主干日志的内容 和跑步git svn rebase正确地获取新的
  • git tag -l 不会删除已删除的标签

    这是场景 我将我的存储库克隆到一个定期更新的目录 git pull 现在我又创建了一个目录并签出了相同的存储库 我必须创建一些标签 但我错误地创建了名称错误的标签 所以我从第一个目录中删除了标签 git tag d old git push
  • 当主干/分支/标签结构混乱时,如何从 Subversion 迁移到 Mercurial?

    我想将存储库从 Subversion 转换为 Mercurial 但是当我最初设置存储库时 我以最懒的方式完成了它 随着时间的推移 该结构不断变形和恶化 此时已有 5 年历史 尽管如此 我还是想保留尽可能多的历史 即使我必须弄脏并手动将东西
  • git clone 永远挂在 github 上

    当我按照 github 中的第 5 点 测试所有内容 时guide http help github com linux set up git ssh 命令也永远挂起 根据该指南 我应该看到一条消息 Github 不提供 shell 访问
  • Git rebase 分支与所有父分支(或依赖子分支)

    是否可以使用 Git 来对分支及其所有父分支进行变基 我认为 父分支 是在这里使用的正确形式 根据您的观点 您也可以将它们称为依赖子分支 但是 遵循提交的父指针将让您到达这些分支 所以恕我直言称它们为 父分支 是公平的 我经常使用分支作为快
  • eGit/ZendStudio 9 生成的 Refspec HEAD:refs/for/refs/heads/master 是什么意思?

    在 ZendStudio 9 中从 Git 设置一个项目 基于 eclipse 和 eGit 它生成一个安静的正常获取引用规范 Remote Fetch Specification refs heads refs remotes origi
  • 使用 Capistrano 3 部署 git 子模块

    我的项目存储库包含 Wordpress 作为 git 子模块 通过 Capistrano 3 部署时 子模块目录是空的 project wordpress images 我正在使用 git 和 deploy via remote cache
  • 如何在使用 https 克隆后通过 SSH 访问 git 存储库?

    我有一个已经在我的计算机上克隆的存储库https 我想将此存储库设置为ssh这样我就不必每次 git push 时都输入用户名和密码 关于如何转换它的任何建议https将存储库克隆到ssh而不必实际重新克隆它 这样我就可以避免一直输入我的凭
  • 如何在 git tag 消息中包含换行符

    当我在 git 中标记版本化代码时 我喜欢在标记消息中使用项目符号点 这可以通过带注释的标签轻松完成 git tag a v1 0 0 Change number 1 Change number 2 Write a tag message
  • Git http - 安全地记住凭据

    通过 HTTP S 连接到远程存储库时 有没有办法安全地让 git 记住我的凭据 我已经尝试过core askpass方法详述于git config http git scm com docs git config让外部脚本提供我的凭据 尽
  • 如何正确分叉本地 git 存储库?

    我有一个本地 git 存储库 我想分叉它并将其用作新项目的基础 新项目不应该将任何东西推回到原来的项目 这就是我的think我应该做 git clone originalproject newproject git remote remov
  • 来自外部 .diff 文件的交互式补丁

    Linux 是否有命令或程序允许交互式地修补源代码 在屏幕上打印每个块并在将其应用到文件之前等待确认 就像是git add p 但是从另一个 diff 文件中进行更改 您始终可以在 shell ruby python 中编写脚本 逐行读取该
  • 导入数千条记录后无法推送到 Heroku

    我有一个问题 我认为我的 sqlite3 数据库太大 我将大约 100 000 条记录导入到数据库中 并且能够 git Push 和 git Push heroku 现在我可能犯了一个错误 导入了太多记录 500 000 我能够推送到 gi
  • 使用 Github for Windows 通过 SSH 处理自己的私有 Git

    现在 我正在使用 msysgit 来使用 SSH 来处理存储在 ec2 Amazon 云服务器上的我自己的私有存储库 到目前为止 我已经能够通过 Git Bash 成功连接到这些存储库 使用 ssh keygen 创建 ssh rsa 公钥

随机推荐