git从存储中删除文件

Hou*_*man 30 git git-stash merge-conflict-resolution

我有一堆文件藏在里面.

但由于存在冲突文件,我无法应用我的存储.我在我的藏匿处找到了有问题的文件,我想将其删除.

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

tor*_*rek 25

存储是提交(或者实际上,两次甚至有时是三次提交),您无法更改提交.那么,你的问题的字面答案是"你不能".幸运的是,你不需要.

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

让我们说冲突在档案中README.txt,所以这里有一些东西可以写.

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

git stash apply
git checkout --ours -- README.txt  # or git checkout HEAD -- README.txt
Run Code Online (Sandbox Code Playgroud)

如果要保留in-stash版本,请提取以下版本:

git checkout --theirs -- README.txt # or git checkout stash -- README.txt
Run Code Online (Sandbox Code Playgroud)

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

一旦你完成了藏匿,你git stash drop将"忘记"构成藏匿的提交.(在你确定完成之前不要这样做;之后很难将它取回.)

  • 当尝试`git stash apply`时,由于冲突我得到一个错误:`error:您对以下文件的本地更改将被merge覆盖:` (2认同)

Dmy*_*nko 13

这种情况有一种解决方法:

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

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

    $ patch -p1 < stash.patch
    
    Run Code Online (Sandbox Code Playgroud)

不要忘记stash.patch事后清理!