【问题标题】:Git submodule revert commitGit子模块恢复提交
【发布时间】:2018-07-04 12:05:50
【问题描述】:

我在 Git 项目 super 中有一个子模块 sub。现在有super 的多个分支,每个分支都可能指向sub 的另一个提交。通过

更改super的分支
>$ git checkout <branchname>

但是,没有正确调整 sub 以再次指向正确的提交。而是

的结果
>$ git status

包含sub已修改 条目。

这只是可能想要恢复对sub 的任何修改并检查super 实际指向的提交的几种情况之一。

对于您可以随时运行的文件

>$ git checkout -- path/to/file

还原任何修改。所以我基本上是在寻找一个等效的调用来以同样快速和简单的方式恢复子模块。

我知道这可以通过两个命令的组合来实现:

>$ git submodule deinit -f /path/to/sub
>$ git submodule update --init --recursive /path/to/sub

但我正在寻找一个更短的版本,它可能更容易记住并且输入速度更快;)

你有什么建议吗?

【问题讨论】:

标签: git git-submodules


【解决方案1】:

你能试试这个命令并检查一下吗?

git checkout --recurse-submodules {branch_name}

【讨论】:

  • 这可能是最好的方法,但需要 Git 2.13 或更高版本(并且 2.13.2 对包含自己的子模块的子模块进行了错误修复)。
  • 我无法测试它,因为我的 Git 版本太旧了。但是,我认为这不是我想要的。我不想签出特定的分支,但是 super 指向的提交,从而删除了 sub 中的任何本地更改。
【解决方案2】:

正如 torek 所说,跳过 deinit 步骤效果很好。因此,以下命令为我完成了这项工作:

git submodule update --recursive /path/to/submodule

谢谢大家的回答!

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 2012-06-30
    • 2016-06-23
    • 2019-07-11
    • 1970-01-01
    • 2013-09-07
    • 2012-09-13
    • 2013-01-03
    • 1970-01-01
    相关资源
    最近更新 更多