【问题标题】:git -- remove latest commit ... without messing up the working directorygit -- 删除最新提交...而不弄乱工作目录
【发布时间】:2022-01-12 04:03:21
【问题描述】:

典型的问题是如何删除最新的提交。这很容易: git reset --hard HEAD~1

但是...我不希望工作目录被新的头内容覆盖。

如果您重置头,工作目录将恢复到该头提交时的 repo 内容。我想保留我更改的文件。

例如我已经更改了三个文件,但只想提交两个。我不小心把这三个都犯了。如果我重置头部,不仅会删除错误提交,而且会还原所有更改的文件。我想删除最新的提交,然后只提交我打算提交的两个。这意味着我需要将更改的文件保留在工作目录中。

我认为我已经很好地解释了这个问题。或者至少我希望如此。

【问题讨论】:

  • 使用软重置或混合重置,具体取决于您希望对 Git 的索引(也称为暂存区)发生什么。请参阅 Tim Beigeleisen 对 --soft 变体的回答。使用--mixed / 默认值,您将不得不再次git add 文件,而不是重置/恢复一个文件。

标签: git reset git-commit git-reset


【解决方案1】:

也许软重置在这里对你有用:

git reset --soft HEAD~1

这会将 HEAD 指针移回一个提交,到倒数第二个提交。它还将暂存您修改的三个文件的更改。您可以取消暂存您不打算提交的第三个文件的更改,然后再次提交:

git commit -m 'modified only two files'

现在您的分支将有一个新的提交,其中仅包含对您想要的两个文件的更改。

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 2011-11-14
    • 2016-05-22
    • 2011-04-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2014-09-29
    相关资源
    最近更新 更多