【发布时间】:2021-09-17 18:21:18
【问题描述】:
我有这样的提交,1 是最新的,3 是最旧的:
- 提交 1
- 提交 2
- 提交 3
如何删除提交 1 和 2,但保留更改并将其提交到 commit 3?
【问题讨论】:
标签: git
我有这样的提交,1 是最新的,3 是最旧的:
如何删除提交 1 和 2,但保留更改并将其提交到 commit 3?
【问题讨论】:
标签: git
要重置最后两个提交,您可以使用git reset HEAD~2,它将删除提交。删除提交后,您可以修改最旧的提交,使其包含提交 1 和提交 2 的更改,git add --all 然后 git commit --amend。
【讨论】:
commit 3的父级。
one commit too far和impact commit 3 parent是什么意思,能详细点吗?我认为如果我们 git reset HEAD~3 而不是 2 就会发生这种情况。如果我们只是进行新的提交,不是 commit 3, new commit 而不是 commit 3 自己拥有所有更改吗?
reset 返回 2 次提交,所以此时 HEAD 指向 commit 3。然后git commit --amend 意味着重新做之前的提交,所以commit 3 的parent。
git commit --amend 重做 current 提交。我不确定如何重做前一个(因为它也会影响当前的,所以在这种情况下每个--amend 都会改变 2 个提交)
previous commit、previous commit 有错误的理解表示last commit,不表示last 提交的previous。
您可以运行 git reset --soft HEAD~2 将 HEAD 分支移回较旧的提交(您要保留的最新提交)。
然后简单地再次运行 git commit 并更改您的愿望。在此之前添加您要保留更新提交的所有文件。
如果您想了解这方面的详细信息,请通过下面的链接。 Git-Reset Demystified
【讨论】: