首页 > 解决方案 > 在提交中恢复对子模块的更改

问题描述

问题

鉴于已推送的提交sha1包含对子模块的更改以及对其他文件的一些其他更改,我如何仅恢复对子模块的更改,但保留对其他文件的更改?(即,恢复整个提交不是一个选项。)

到目前为止的尝试

我根据相关问题的答案尝试了这个:

git show some_commit_sha1 -- path/to/submodule | git apply -R

但显然它不起作用。

如果确实如此,我会感到惊讶,因为差异就是这样:

git show some_commit_sha1 -- path/to/submodule
[...]
-Subproject commit abcdef12345....
+Subproject commit 98765432109....

(我想git apply -R对此无能为力。)

相关但不重复的问题:

在提交中恢复对文件的更改 这正是我想要做的,但不是使用文件,而是使用子模块。

如何恢复对 git 子模块的更改?这是为了恢复“本地”(尚未提交的)更改

Git submodule revert commit Title 似乎正是我所需要的,但随后问题又问到了其他问题(如果我理解正确,这是关于在各个分支上更改子模块的内容)

标签: gitversion-controlgit-submodulesrevert

解决方案


子模块提交还原

首先转到命令提示符然后转到要还原的子模块。

1) cd ../子模块名称

提交 ID 将在 GIT 提交中可用,但在 PR 中有所不同。

2) git checkout 提交 ID

检查 git 状态

3) 混帐状态

查看命令提示符子模块上的输出看起来像红色,只需检查。

4)修改:../子模块名称

然后将更改添加到 GIT 以进行推送。

5)混帐添加../。

再次检查状态

6) 混帐状态

查看命令提示符子模块上的输出看起来像绿色,只需检查。

7)修改:../子模块名称

然后将更改推送到 GIT

8) git推送

注意:如果推送未完成表单命令提示符,那么您可以Android Studio在 android 或Source Tree其他 GIT 编辑器的情况下推送。

Android Studio如果您只能还原错误子模块提交的文件的特定部分,则对于 android 是更好的选择,为了取笑您只能选择那些只会错误合并的文件。


推荐阅读