【问题标题】:git: redo an old commit onlygit:只重做一个旧的提交
【发布时间】:2019-02-02 23:09:02
【问题描述】:

我有一个git下的项目,其中最后一次提交有正确的更改,但倒数第二次提交必须完全还原,所以从倒数第三次到倒数第二次应用的更改必须是“忽略”。

最后一次提交和倒数第二次提交没有共同的修改文件。

我该怎么做?

【问题讨论】:

  • 您想更改历史记录(删除较旧的提交)还是只创建一个撤消较早提交的新提交?后者可以通过git revert 完成。
  • 我更喜欢创建一个新的提交,以防万一回滚导致一些奇怪的问题,我总能看到旧代码的变化。
  • @Peregring-lk 是的,这正是 revert 的目的:你保留你的历史。

标签: git revert


【解决方案1】:

执行此操作的典型方法是

git revert HEAD^
# HEAD points to the last commit, so HEAD^ is the commit just before

它将在分支提示之上创建一个新提交,其中包含错误提交所包含的反向更改。

注意:这不会重写您的历史记录,当您需要推送时无需 --force 任何内容。

【讨论】:

    【解决方案2】:

    如果您在分支中,您可以使用cherry-pick

    即:

    • 从最后一个良好的提交创建一个新分支(例如:master)

    • 然后cherry-pick最后一次提交:git cherry-pick <last-commit-sha>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2018-10-18
      • 2016-06-23
      • 1970-01-01
      • 2013-12-30
      • 2017-04-24
      • 2015-10-08
      相关资源
      最近更新 更多