取消提交当前分支中的所有提交,但将所有更改保留在当前状态

时间:2017-04-07 09:16:52

标签: git

我的回购中有一个分支A,有10个提交。我想要的是找到一种删除所有提交的方法,但保留当前分支中的所有更改(因此代码的状态将相同,但A中的所有提交都将消失)。目的是我现在可以检查所有的更改,并且在我合并回master之前,我可以选择我想要的并构造更好的提交消息。这种流动甚至可能吗?

5 个答案:

答案 0 :(得分:5)

git reset master会将HEAD和索引更改为与master相同的状态,但保持工作树不变(例如当前状态)。

答案 1 :(得分:1)

git reset commit id会将提交重置为指定的提交ID。在这种情况下,您可以从git log找到先前的commit id并恢复为该commit id。

答案 2 :(得分:1)

git reset --soft <commit-id>会做你需要的。它会将HEAD移动到指向但不会改变工作树的状态(因此它将保留您的文件)。使用A命令查找log开头的提交哈希值。

如果您想了解有关reset的更多信息,请查看文档here

答案 3 :(得分:0)

将你的提交作为一个单一的单位拼凑在一起可能对你有所帮助。 看看here

答案 4 :(得分:0)

你必须将所有你的提交压缩成一个,然后重置。 看this