Git 修改后的提交恢复到以前的提交

Git 修改后的提交恢复到以前的提交,git,patch,gerrit,git-rebase,git-amend,Git,Patch,Gerrit,Git Rebase,Git Amend,我与母分行签订了回购协议。我在一次提交中修改了补丁集1到10。现在我已经修改了提交中的第11个补丁集,并在gerrit中推送了代码。我想将提交还原为第10次提交并推送。如何恢复,就像我看到git日志一样,它没有列出该补丁集中的提交。但它将其视为一次提交 我已经在下面解释了操作的顺序 Sequence of actions 1. Initially for patch-set #1 git clone repo made changes to code git commit git push

我与母分行签订了回购协议。我在一次提交中修改了补丁集1到10。现在我已经修改了提交中的第11个补丁集,并在gerrit中推送了代码。我想将提交还原为第10次提交并推送。如何恢复,就像我看到git日志一样,它没有列出该补丁集中的提交。但它将其视为一次提交

我已经在下面解释了操作的顺序

Sequence of actions
1. Initially for patch-set #1 
git clone repo
made changes to code 
git commit 
git push HEAD:refs/for/master => pushes to gerrit
Let us assume gerrit patch# generated is 12345

2. mkdir new_dir
git clone repo
git checkout ssh:user@gerrit1.xxx.com/development refs/changes/1/12345/1 && git checkout FETCH_HEAD
made modifications for patch-set 2 on patch-set 1
git commit --amend
git push HEAD:refs/for/master => pushes to gerrit 

Now gerrit patch#12345 has following commits/patch-sets
1, 2

3. Repeated step 2 for patch-sets 3 to 11
Now gerrit patch#12345 has following commits/patch-sets
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

4. Got to know path-set 11 is redundant, has to be reverted, so that patch-set#10 is the latest and 11 should be discarded, so that gerrit patch#12345 has commits/patch-sets 1, 2, 3, 4, 5, 6, 7, 8, 9, and 10 only (not 11).


How do I achieve step 4?
当我尝试使用提交id的git rebase-I时,它显示了致命的坏对象

请让我知道如何使用git命令解决这个问题,或者我应该手动解决


谢谢。

答案在你的问题中。不必签出补丁集1,只需取回补丁集10即可

git checkout ssh:user@gerrit1.xxx.com/development refs/changes/1/12345/10 && git checkout FETCH_HEAD
git commit --amend
git push HEAD:refs/for/master
您需要修改补丁集10,以便能够再次推送,因为Gerrit不允许您重新推送相同的补丁集,在此之后,您可以提交补丁集11


或者,您可以检查reflog并在其中找到补丁集11。但最简单的方法是从Gerrit下载命令中获取命令

我不确定您的情况如何,但当您修改此命令时,您现在“看不到”它们。用reflog来支持你的历史怎么样?“我在一次提交中修改了1到10个补丁集。”你是说你在一次提交中压扁了它们吗?你想恢复那个承诺吗?@dunajski我会在这里解释情况。我与master branch签订了干净的回购协议。我做了一些更改,做了一个提交1,并将其推到gerrit中的一个单独补丁集中。后来我又做了一些补充,然后对之前的提交1进行了修改,这将是提交2,这持续了几个月。现在我在一次提交中有10个补丁集,在git日志中可以看到10个补丁集。但在gerrit中,我有10个单独的补丁集。我已经进行了第11次提交,并加入了gerrit,但我想将其恢复为提交10。我在用gerrit。有可能吗。(使用gerrit编辑的问题)您能试用--->git reset--soft HEAD吗~1@Muzzamil不,这不会有帮助,因为git将整个gerrit补丁视为一次提交。@Muzzamil和@dunajski我修改了这个问题,使它更清楚。请让我知道,如果有任何更多的细节需要了解。