将更改还原到提交中的子模块

时间:2019-02-18 09:21:31

标签: git version-control git-submodules revert

问题

鉴于已经推送的提交sha1包含对子模块的更改,以及对其他文件的其他更改,我如何仅将更改恢复到子模块,而又将更改保留到其他文件? (即,不能还原整个提交。)

到目前为止尝试

我根据相关问题中的answer进行了尝试:

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对此无能为力。)

相关但不可重复的问题:

Revert changes to a file in a commit这正是我想要做的,但是不是使用文件而是子模块。

How do I revert my changes to a git submodule?这是用于还原“本地”(尚未提交)更改

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

1 个答案:

答案 0 :(得分:0)

子模块提交还原

  

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

1)cd ../子模块名称

  

commit id将在PR有所不同的GIT提交中提供。

2)git checkout提交ID

  

检查git状态

3)git状态

  

请查看命令提示符子模块上红色的外观,只需检查即可。

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

  

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

5)git add ../.

  

再次检查状态

6)git状态

  

请查看命令提示符子模块上绿色的输出,只需检查即可。

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

  

然后将Push更改为GIT

8)git push

注意:如果未完成推送形式的命令提示符,则可以在Android或Android Studio或其他一些GIT编辑器的情况下通过Source Tree进行推送。

在Android的情况下,

Android Studio是更好的选择,如果您只能还原错误的子模块提交的文件的特定部分,那么您只能选择那些应该被错误地合并的文件。