Git 还原一些提交(包括合并),然后稍后重新提交

时间:2021-03-17 13:40:13

标签: git version-control git-revert

我有一个临时服务器,我在其中使用来自 git 服务器的 git pull 更新代码。这里可能相关或可能不相关的一个细节是,在某个时候它开始发生,每次我拉它时都会要求我合并。我还没有足够的时间去弄清楚为什么。无论如何,如果我查看 git log,每次拉取后都会进行合并。无论如何,不​​是真正的问题。我只需要暂时还原 2 个先前的提交(带有 2 个相应的合并)。我非常有信心如何使用 git revert 出现在 git 日志中的 2+2 = 4 个哈希然后提交。

问题是我想在未来稍后重新提交还原,因为我们稍后需要这些更改,但不是现在。我是否需要做一些特别的事情,这样我才不会丢失我还原的提交?

1 个答案:

答案 0 :(得分:1)

revert 可能不是您想要的; revert 添加一个新的提交来撤消一组更改。 reset 更像它,用于修改分支历史记录,但在做任何鲁莽的事情之前请继续阅读。

我建议的第一件事是尝试使用 pull -r 自动将您的本地更改重新绑定到分支的更新 HEAD(即分支的远程副本)。

您还可以使用 rebase 启动交互式 rebase -i origin/mybranch。 Rebase 是 git 最强大的功能,它允许你重写历史。这也有点危险,所以要小心。

rebase 教程:https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase

无论你对本地 git 目录做什么,reflog 都会让你看到你的 repo 之前的状态(提交)。当我搞砸 rebase 或重置时不小心“丢失”了一个提交时,它挽救了我的屁股一两次。