我需要恢复最新提交的代码更改,但同时保留提交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
uqcuzwp81#
你可以使用git revert HEAD命令。去看看医生,看看这是否真的是你想要的。https://git-scm.com/docs/git-revert
git revert HEAD
5sxhfpxr2#
是的,有可能。只需通过git branch temp_branch HEAD;创建一个新的(可能是临时的)分支。然后你应该重置你当前的分支一次提交:git reset --hard 'HEAD^'。您的提交将保留在temp_branch中,而当前工作分支中的更改将有效地恢复。
git branch temp_branch HEAD;
git reset --hard 'HEAD^'
temp_branch
uqcuzwp83#
在不更改提交的hash/id的情况下更改提交的内容是不可能的。根据https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F:Git中的所有内容在存储之前都经过校验和,然后由该校验和引用。这意味着不可能在Git不知道的情况下更改任何文件或目录的内容。此功能内置于Git的最底层,是其哲学的组成部分。确保相同的提交哈希指向仓库的完全相同的状态是git在其核心提供的核心完整性保证之一。
3条答案
按热度按时间uqcuzwp81#
你可以使用
git revert HEAD
命令。去看看医生,看看这是否真的是你想要的。
https://git-scm.com/docs/git-revert
5sxhfpxr2#
是的,有可能。
只需通过
git branch temp_branch HEAD;
创建一个新的(可能是临时的)分支。然后你应该重置你当前的分支一次提交:git reset --hard 'HEAD^'
。您的提交将保留在
temp_branch
中,而当前工作分支中的更改将有效地恢复。uqcuzwp83#
在不更改提交的hash/id的情况下更改提交的内容是不可能的。
根据https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F:
Git中的所有内容在存储之前都经过校验和,然后由该校验和引用。这意味着不可能在Git不知道的情况下更改任何文件或目录的内容。此功能内置于Git的最底层,是其哲学的组成部分。
确保相同的提交哈希指向仓库的完全相同的状态是git在其核心提供的核心完整性保证之一。