如何取消提交所有未推送的 git 提交而不丢失更改

问题描述 投票:0回答:4

有什么方法可以撤消所有未推送的提交(我在没有推送的情况下向错误的分支进行了 3 次提交)而不丢失更改?

git git-commit git-push git-pull
4个回答
2
投票

您可以使用

git reset
返回到之前的提交。

确保使用 --mixed 选项,这样它会保留您的更改但删除提交:

git reset --mixed HEAD~3

1
投票

在这种情况下,我通常建议是从当前提交创建一个新分支,然后将当前分支硬重置回进行新提交之前的点。

# from master
git branch feature
git reset --hard HEAD~3

上面假设您错误地提交了

master
分支,而您实际上打算在某个
feature
分支上。它还假设您进行了 3 次提交。如果不是 3,请将硬重置命令更改为正确的提交数。


0
投票

~1
~2
~3
~4
是提交数量

删除最近的提交,保留更改

git reset --soft HEAD~4

删除最近的提交,删除更改

git reset --hard HEAD~4

保留更改但删除提交

git reset --mixed HEAD~4

0
投票

我想要一种方法来做到这一点,而不总是需要知道要重置多少提交。因此,为了自动获取该数字,我使用了

git cherry -v
,它提供了此类数据:

+ 5863a345c61f9940415899ef1a3d4af61d81c350 fix no color causing broken swatch
+ 4d777fee2e46a49e6d1c7c293246eb0a6e7a9a40 better support for categories without a default color

通过

wc -l
管道获取行数,然后通过
xargs
清理空白并...:

git reset --mixed "HEAD~$(git cherry -v | wc -l | xargs)"
© www.soinside.com 2019 - 2024. All rights reserved.