git - 如何将 "reopen"一个古老的提交到最近提交中恢复的工作树中?

标签 git git-revert

我的目标是重新访问旧错误提交的原始更改(此后已恢复),但是由于许多事情都发生了变化,因此在我的工作树中将那些古老的更改放在 repo 协议(protocol)的 HEAD 中,解决问题并提交新的最好没有问题。

一千次提交前(一个月前),我提交了一个更改。

一百次提交前(一周前),有人发现了提交的一个微妙但 Not Acceptable 问题,以便快速解锁那个人我恢复了提交(git revert hash .. . 工作起来很有魅力)。

冲刺已经过去,现在在我的存储库中的 HEAD,我想重新打开原始提交中已经被还原的更改,这样我就可以梳理这些更改并找出根本原因发现的问题。

将一千次提交之前的提交“重新打开”到我的本地工作树中的好方法是什么?(因此 git status 将被修改 在我的工作树中。)

更糟糕的情况是 git checkout 在另一个 repo 中并排执行旧提交并进行手动差异(例如,vi -d current/foo.cpp ancient/foo.cpp) 并手动复制差异。听起来很乏味,而且出现手动错误的可能性更高。

会有一些冲突,但它们相对微不足道,例如固定的拼写错误或空格更改。

我不想按原样重新提交旧提交,因为它需要仔细检查和修复。

最佳答案

我建议在您的日志历史记录中找到还原提交 的散列,然后使用 <commit_hash>你可以

git revert --no-commit <commitHash>
# or the shorter
git revert -n <commitHash>

...这会将原始提交的更改带入您的工作树,而无需实际提交,这让您可以测试、编写更多代码,然后在您准备好时提交。

关于git - 如何将 "reopen"一个古老的提交到最近提交中恢复的工作树中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69677716/

相关文章:

git - git 存储库中当前分支上的根提交是否有特殊名称(如 HEAD、FETCH_HEAD)?

git - 如何使用 git(在 Windows 上)向 svn 贡献代码?

git - 有没有办法将旧提交 'soft revert'?

git - 修复 GIT 存储库上的历史记录

asp.net - 开源开发过程中如何混淆数据库认证信息?

git - Powershell 在每次 pull 时而不是在启动时要求 git RSA 密码?

Git 点对点共享 - 致命 : read error: Invalid argument

git - 从 git 恢复特定的提交

git - 如何恢复未提交的更改,包括文件和文件夹?

Git 恢复失败