我对如何删除本地提交(即未推送到远程的提交)而不丢失其所做的更改感兴趣。
我做了什么: -进行本地更改(我从未将其推送到远程) -恢复该提交 -检查我是否还有更改 完成上述所有步骤后,我意识到我的本地更改丢失了。我必须还原还原提交才能使其恢复。
我的问题是:删除本地提交而不丢失其中包含的更改的正确方法是什么?
答案 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
中的更改,但仍使它们易于访问-我将按以下方式处理这种情况:
git checkout branch1
-切换到最新的branch1
(当前为C
)git branch branch2
-创建指向更改的分支git reset --hard B
-从分支中删除C
更改获取最终状态:
branch1 A---B
\
branch2 C
我喜欢这种方法,因为如果以后需要合并,重新设置基础或对这些更改进行选择,它可以让我轻松地引用更改分支。此外,通过将其保留为分支(而不是仅记录提交ID),我确保所做的更改是可以到达的,因此将永远不会被垃圾收集。
注意:即使更改在多个提交之间隔开,这种方法仍然有效-并具有相同的优点