【发布时间】:2021-12-09 03:32:39
【问题描述】:
我的目标是从旧的错误提交中重新访问原始更改(此后已被还原),但是由于许多事情都发生了变化,因此在我的工作树中将这些古老的更改保存在 repo 的 HEAD 中,修复问题并提交新的更好地提交 sans 问题。
一千次提交前(一个月前),我提交了一个更改。
一百次提交前(一周前),有人发现了一个微妙但不可接受的提交问题,以便快速解除对那个人的阻止,我恢复了提交(git revert hash ... 就像一个魅力)。
一个 sprint 已经过去,现在在我的 repo 中的 HEAD,我想重新打开原始提交中已经恢复的更改,以便我可以梳理更改并找出根本原因发现的问题。
有什么好方法可以将一千次提交之前的提交“重新打开”到我的本地工作树中?(所以 git status 将在我的工作树。)
更糟糕的情况是 git checkout 在另一个 repo 中并排提交旧的提交,然后手动进行差异(例如,vi -d current/foo.cpp ancient/foo.cpp)并手动复制差异。听起来很乏味,而且手动出错的可能性更高。
会有一些冲突,但它们会相对微不足道,例如固定的错别字或空白更改。
我不想按原样重新提交古老的提交,因为它需要仔细检查和修复。
【问题讨论】:
-
如果我理解你的话,你可以创建一个临时分支,选择提交,对之前的提交进行软重置。比隐藏当前的更改。签出当前工作分支,然后应用存储。这是你想要达到的目标吗?
-
@MartinTavernier • 这听起来很合理。我自己不会想到这一点(我的 git-fu 很弱)。我会试一试并报告,谢谢!
标签: git git-revert