- Published on
Git提交被撤销, 再次提交新变动无法应用 | git - merge - revert - merge | git format-patch
- Authors

- Name
- Shelton Ma
问题现象(What Happened)
master合并了一个分支(比如feature),提交进来了- 后来使用
git revert把那次合并的内容“撤销”了 - 再后来想再次引入
feature的代码,再次merge或者cherry-pick重新挑选提交,结果Git显示cherry-pick成功,但没有任何变动
问题原因(Why It Happened)
Git会认为这个提交 已经应用过,即使后来被revertrevert并不会**“删除”**原始提交,而是追加一个反向操作
解决方案(How to Fix It)
(推荐)如果
feature没有添加新的提交, 使用revert可追踪所有变更, 原始提交信息完整git revert <revert-commit-sha>如果有新的提交, 先撤销已撤销的提交, 再提交新的合并
format-patch + apply精准还原控制git format-patch -1 <commit-sha> git apply 0001-xxx.patch git commit -am "Re-apply feature with patch"(不推荐)
git checkout feature -- .临时用, 会创建新的commit, 没有保留历史checkout --会将feature分支的所有文件(也可修改.来指定特定文件)复制到当前分支- 相当于在当前分支产生新的提交