还原本地提交

时间:2019-08-08 17:34:49

标签: git

我对如何删除本地提交(即未推送到远程的提交)而不丢失其所做的更改感兴趣。

我做了什么: -进行本地更改(我从未将其推送到远程) -恢复该提交 -检查我是否还有更改 完成上述所有步骤后,我意识到我的本地更改丢失了。我必须还原还原提交才能使其恢复。

我的问题是:删除本地提交而不丢失其中包含的更改的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

这已经回答了好几次了。参见:How do I undo the most recent local commits in Git?

您要执行的操作是git reset --soft 4817564,其中4817564是您要还原的提交的SHA。

答案 1 :(得分:0)

如果我们有提交图:

branch1    A---B---C

我们想回滚/还原/ C中的更改,但仍使它们易于访问-我将按以下方式处理这种情况:

  1. git checkout branch1-切换到最新的branch1(当前为C
  2. git branch branch2-创建指向更改的分支
  3. git reset --hard B-从分支中删除C更改

获取最终状态:

branch1    A---B
                \
branch2          C

我喜欢这种方法,因为如果以后需要合并,重新设置基础或对这些更改进行选择,它可以让我轻松地引用更改分支。此外,通过将其保留为分支(而不是仅记录提交ID),我确保所做的更改是可以到达的,因此将永远不会被垃圾收集。

注意:即使更改在多个提交之间隔开,这种方法仍然有效-并具有相同的优点