如果我已经推送了原始提交,如何从提交中恢复--amend?

时间:2014-07-16 21:32:48

标签: git

场景:我提交,推送到远程服务器,然后使用--amend提交其他内容。如果我再次尝试推送,我会收到错误,因为我改变了已被推送的历史记录。

  1. 假设我关心修改后的更改,如何撤消此操作以使我的历史记录看起来像远程历史记录(丢弃--amend更改)?
  2. 假设我关心修改后的更改,如何将修改后的提交转换为独立提交,以便历史记录如下:

           commit 1            <-           commit 2
    (already pushed to server) <- (originally from amended commit)
    
  3. 我试图避免使用push -f


    This is a very similar question但是有一个关键的区别:在那个问题中,他还没有将提交1推送到远程仓库。在我的问题中,我有。

1 个答案:

答案 0 :(得分:7)

我假设您的遥控器名为origin,您的分支称为master。根据需要进行调整。

  

让我们说我不关心修改后的变化

然后您可以使用git reset --hard origin/master。这会将您当前的分支设置为遥控器上的分支,并更新您的索引和工作树以匹配。

  

让我说我关心修改后的变化

然后您可以使用git reset --soft origin/master。这会将您当前的分支设置为远程上的分支,但不会更新您的索引或工作树以匹配。然后,您可以使用git commit创建包含已添加更改的新提交。