gpt4 book ai didi

git - 如何删除 Git 中的非最后一次提交?

转载 作者:太空狗 更新时间:2023-10-29 14:29:51 28 4
gpt4 key购买 nike

我最近创建了一个新分支,我们称之为“branch1”,它基于另一个分支,我们称之为“master”。然后我对 branch1 做了一堆提交,现在我意识到前几次提交实际上是一个错误,但是前几次之后的那些仍然是很棒的提交!所以我在这里尝试做的基本上是删除前几个提交,以便它们之后的提交基本上重新建立在 master 的基础上......如何做到这一点?

最佳答案

说这是你从最近到最早的提交历史:

branch1

5XXXX Good Commit
4XXXX Good Commit
3XXXX Good Commit
2XXXX Bad Commit
1XXXX Bad Commit

因此,假设您只想删除 1XXXX2XXXX 中的代码,而不关心这些提交是保留还是删除。因此,您现在可以这样做:

git revert 1XXXX这会生成一个新提交,其中包含类似于 reverts 1XXXX

的消息

然后,

git revert 2XXXX这会生成一个新提交,其中包含类似于 reverts 2XXXX

的消息

您现在有两个新的提交,它们还原了 1XXXX2XXXX。只需 push 它们...

git push origin branch1

因此,您的提交现在将是:

branch1

7XXXX Good Commit reverting bad commit 2XXXX
6XXXX Good Commit reverting bad commit 1XXXX
5XXXX Good Commit
4XXXX Good Commit
3XXXX Good Commit
2XXXX Bad Commit
1XXXX Bad Commit

如果你想摆脱提交本身,那么你可以这样做:

git rebase --interactive 1XXXX

因此,在同一分支 branch1 上,您现在正在对第一个错误提交 1XXXX 进行 rebase 。你现在会得到一个文本编辑器,它有类似的东西:

pick 5XXXX Good Commit
pick 4XXXX Good Commit
pick 3XXXX Good Commit
pick 2XXXX Bad Commit
pick 1XXXX Bad Commit

Bad Commitspick 更改为 squash

pick 5XXXX Good Commit
pick 4XXXX Good Commit
pick 3XXXX Good Commit
squash 2XXXX Bad Commit
squash 1XXXX Bad Commit

修复任何 merge 冲突,如果它们出现并且 BOOM! 1XXXX2XXXX 从未存在过!!

关于git - 如何删除 Git 中的非最后一次提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29526956/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com