问题
鉴于已经推送的提交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标题似乎正是我所需要的,但随后的问题询问了其他内容(如果我理解正确,那是关于更改各个分支上子模块的内容)
答案 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 Studio
是更好的选择,如果您只能还原错误的子模块提交的文件的特定部分,那么您只能选择那些应该被错误地合并的文件。