在使用 "git filter-branch --subdirectory-filter" 命令后保留stash

8

最近我使用git filter-branch --subdirectory-filter deep/in/my/project将存储在bigproj中的我的仓库分离出来。然后,我将.git目录移动到deep/in/my/project

现在,stash处于奇怪的状态,顶部的stash大概是这样的:

stash@{0}: filter-branch: rewrite

我无法删除这个储藏,因为执行 git stash drop 后出现以下错误:

refs/stash@{0}: not a valid stashed state

现在,即使我知道stash@ {1}的refid,它仍然包含bigproj层次结构中的文件差异。是否有可能重写stash数据,使其仅包含属于deep/in/my/project层次结构的文件?

2个回答

3

我在使用 git filter-branch 后遇到了同样的问题。以下命令可以完全修剪stash,并删除由 git filter-branch 创建的条目。 警告!调用此命令后,所有存储的更改可能无法恢复,请确保在调用该命令之前应用所有其他的存储状态。

    git stash clear

但我不想清空整个存储库,我只想保留它,只是不包括那些不再在存储库中的部分。 - Nikola Knezevic

0

我猜您需要在移动 .git 目录之前先执行 droppop 操作。在移动后,您始终可以重新进行暂存。


不行,那样做不起作用。即使我在移动.git目录之前尝试使用git stash drop,我仍然会得到相同的错误。你所说的重新存储是什么意思? - Nikola Knezevic
1
嗯,显然由于某些原因,“stash”在过滤分支过程中无法保存。你可能需要回到未过滤的状态,只需提交这些更改,然后在过滤后执行“git reset HEAD~1”将它们变为未提交状态。 - Karl Bielefeldt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接