【问题标题】:How to un-commit all un-pushed git commits without losing the changes如何在不丢失更改的情况下取消提交所有未推送的 git 提交
【发布时间】:2021-04-28 07:04:02
【问题描述】:

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

【问题讨论】:

  • git reset --mixed HEAD~3 可以取消提交您的更改但保留它们。
  • @buladepite 谢谢它解决了,我怎样才能移动到正确的分支并在本地保存更改,直到我再次提交它们?
  • @Alaa “保持本地更改”是什么意思?您是否尝试在正确的分支上重放更改?您可以在错误的分支上“git stash”更改并在正确的分支上“git stash apply”。

标签: git git-commit git-push git-pull


【解决方案1】:

您可以使用git reset 来返回之前的提交。

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

git reset --mixed HEAD~3

【讨论】:

  • 我看不出这对 OP 有什么帮助,因为您的回答仍然会将未提交的工作留在错误的分支上。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-11-20
    • 2022-01-04
    • 1970-01-01
    • 2011-07-09
    • 2021-02-15
    • 2013-02-26
    • 1970-01-01
    • 2020-08-30
    • 2011-06-14
    相关资源
    最近更新 更多