git 如何保留最新提交但恢复其更改

qaxu7uf2  于 2023-10-14  发布在  Git
关注(0)|答案(3)|浏览(143)

我需要恢复最新提交的代码更改,但同时保留提交ID,可以吗?
我尝试了git reset,但它也会删除commit id。
下面是伪步骤:
让我们假设Gerrit G1在项目P1的分支B1中,具有最新的、第二最新的提交G1、G2.我在这里尝试:

git clone P1 in local
git checkout B1
git cherrypick G1
revert the G1 change
Keep the commit ID of G1
git commit --amend to B1
uqcuzwp8

uqcuzwp81#

你可以使用git revert HEAD命令。
去看看医生,看看这是否真的是你想要的。
https://git-scm.com/docs/git-revert

5sxhfpxr

5sxhfpxr2#

是的,有可能。
只需通过git branch temp_branch HEAD;创建一个新的(可能是临时的)分支。然后你应该重置你当前的分支一次提交:git reset --hard 'HEAD^'
您的提交将保留在temp_branch中,而当前工作分支中的更改将有效地恢复。

uqcuzwp8

uqcuzwp83#

在不更改提交的hash/id的情况下更改提交的内容是不可能的。
根据https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F
Git中的所有内容在存储之前都经过校验和,然后由该校验和引用。这意味着不可能在Git不知道的情况下更改任何文件或目录的内容。此功能内置于Git的最底层,是其哲学的组成部分。
确保相同的提交哈希指向仓库的完全相同的状态是git在其核心提供的核心完整性保证之一。

相关问题