Appliy git stash pop到新的子模块

时间:2017-08-29 16:30:40

标签: git git-submodules git-stash

我同时处理了两个任务:编写一些代码并将工作树的文件夹作为子模块。当我切换任务时,我只是git stash save我修改过的文件。问题是我修改过的文件现在是新子模块的一部分。

当我尝试在顶部文件夹上执行git stash pop时,我遇到了很多冲突

$ git stash pop
error: refusing to lose untracked file at 'folder/file1'
error: refusing to lose untracked file at 'folder/file2'
[and so on]

CONFLICT (modify/delete): [folder]/file1 deleted in Updated upstream and modified in Stashed changes. Version Stashed changes of [folder]/file1 left in tree. 
CONFLICT (modify/delete): [folder]/file2 deleted in Updated upstream and modified in Stashed changes. Version Stashed changes of [folder]/file2 left in tree. 
[and so on]
CONFLICT (file/directory): There is a directory with name [folder] in Stashed changes. Adding [folder] as [folder]~Updated upstream

其中[folder]是上一个文件夹/ new submodule

我做了一个完整仓库的干净克隆,新子模块没有问题。

有没有办法将存储转移到子模块?或者在存储中获取文件并在子模块中手动合并它们?

1 个答案:

答案 0 :(得分:0)

我发现了一个'hacky'解决方案。

首先,我使用git stash show stash@{0} -p从我的藏匿处制作了一个git补丁。

然后我手动编辑了修补程序以修改我的路径并删除不需要的东西。

然后git patch mypatch.patch将更改应用于我的子模块。它首次尝试,似乎没有任何麻烦。