【问题标题】:git remove file from stashgit 从存储中删除文件
【发布时间】:2014-03-28 20:25:08
【问题描述】:

我有一个存储区,里面有一堆文件。

但由于文件冲突,我无法应用我的存储。我已经在我的存储中发现了有问题的文件,我想将其删除。

如何在不破坏整个文件的情况下从存储中删除单个文件?

【问题讨论】:

标签: git git-stash merge-conflict-resolution


【解决方案1】:

一个 stash 是一个提交(或者实际上是两个甚至有时三个提交),您不能更改一个提交。那么,你的问题的字面答案是“你不能”。幸运的是,您不需要

您说由于文件冲突而无法应用您的存储。但是你可以应用它,你只会遇到合并冲突。您需要做的就是解决合并冲突。

假设冲突在文件README.txt 中,所以这里有一些东西要写。

如果您想通过保留分支版本来解决它,请应用存储,然后检查分支版本以解决冲突:

git stash apply
git checkout --ours -- README.txt  # or git checkout HEAD -- README.txt

如果您想保留 in-stash 版本,请提取该版本:

git checkout --theirs -- README.txt # or git checkout stash -- README.txt

或者,使用任何旧的合并解析工具(我只是使用文本编辑器),然后“git add”结果。

一旦你完成了存储,git stash drop 将“忘记”构成存储的提交。 (在确定完成之前不要这样做;之后很难将其恢复。)

【讨论】:

  • 我的错误是 sourcetree 不允许我应用存储,因为涉及权限和锁定文件的 Windows 特定错误。但这回答了我的问题。
  • 在尝试 git stash apply 时,由于冲突而出现错误:error: Your local changes to the following files would be overwritten by merge:
  • @BergQuester:在这种特殊情况下,当您在工作树中已经有一些现有更改时,您正在尝试git stash apply。通常即使这样也可以,所以我不完全确定发生了什么(我需要在apply 之前查看git status 输出,以及你给git stash apply 的标志)。不过,一般处理这种情况的方法是提交或存储 current 更改,然后使用git stash branch 将先前的存储转换为新分支,然后使用完整的 Git工具现在你已经隐藏的东西安全地存储为一个分支。
【解决方案2】:

对于这种情况有一个解决方法:

  1. 将您的存储保存为补丁文件:

    $ git stash show -p > stash.patch
    
  2. 应用此补丁,跳过冲突(您将被要求解决冲突,只跳过丢失的文件):

    $ patch -p1 < stash.patch
    

事后别忘了清理stash.patch

【讨论】:

  • 直截了当的解决方案
  • 谢谢!
  • 别忘了在你的 git repo 的根目录下,否则运行 patch 命令时 git 会抱怨找不到文件!
  • 非常干净的方法。
  • 对于 windows 用户,补丁命令在 Cmd/Powershell 中失败。使用 git bash
【解决方案3】:
  1. 存储未提交的更改。
  2. 应用您的原始存储
  3. 丢弃文件
  4. 4 应用包含未提交更改的存储。

【讨论】:

    【解决方案4】:

    我今天遇到了同样的问题。我在一个分支上工作,隐藏了我的修改并想将它们应用到另一个分支上。但我注意到我还隐藏了一个不需要的文件,该文件会造成冲突。以下是我为解决此问题所做的工作:

    • git restore --staged path/to/file
    • git reset HEAD -- path/to/file 从暂存区删除文件

    然后,我添加了我只想要的文件并且能够提交。

    【讨论】:

      【解决方案5】:

      从本地代码库中删除所需文件,然后将其推送到存储区。更改将得到反映,您的文件将从存储中删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        • 1970-01-01
        • 2014-11-19
        • 2010-09-11
        • 1970-01-01
        相关资源
        最近更新 更多