git - Git one-liner 恢复不需要的子模块更改
问题描述
所以,假设我搞砸了并且跑了git commit -a
,不小心提交了一个我不想要的子模块更改(可能是因为我跑了之后git pull
忘记了运行git submodule update
)。我想摆脱这种变化。有没有我可以使用的单线器来做到这一点?
我今天这样做的方式是:
- 我跑去
git show
弄清楚旧的哈希是什么 - 我
cd
进入子模块,然后运行git reset --hard OLD_HASH
- 返回父目录并
git commit --amend -a
这个步骤太多了。真的没有更短的吗?
注意:这个问题与如何将更改恢复到 git 子模块不同?用户不小心对子模块中的文件进行了实际更改。在这种情况下,子模块中没有文件被编辑;我刚刚以错误的方向更新了提交指针。
解决方案
您可以通过编写脚本来编写单行代码。脚本本身不可避免地会超过一行。如果您愿意,它可以是那三行,也可以是其他三行左右的集合(例如,git rev-parse
精心构造git update-index
的 和git commit --amend
)。您可以将该脚本制作成一个 Git 命令(通过命名它git-foo
并将其放在您的路径中,之后git foo
将运行您的脚本)或使用和部分git-foo
将其制作成 Git 别名。git config
[alias]
您可能希望设置您的设置,以便将来不太可能发生,例如使用submodule.recurse
to 。true
(请注意,git push
除非您还设置push.recurseSubmodules
; 仔细阅读文档中的git config
所有子模块设置以获取更多信息,否则这会影响)。
推荐阅读
- r - R根据If函数从字符串中返回N个字符,用于R中的相同字符串
- javascript - navigator.mediaDevices.getUserMedia - 反向摄像头列表顺序/在 HTML5 QR JS 代码扫描器中仅显示后置摄像头
- r - 如何在 R 上选择多个数据
- c# - C# 从 Google 共享驱动器 API v.3 中删除文件
- reactjs - React Native - 使用 rn-sequelize 加密的 SQLite
- javascript - AJV - “standaloneCode 不是函数”
- python - 尝试使用curvefit在python中从Matlab的优化工具箱中运行lsqcurvefit的实现
- python - 创建相关热图期间出现的错误消息
- python - 无法在 Windows 10 上升级 pip
- snmpd - SNMPD 配置限制批准的查询源和限制视图?