自特定时间以来,撤销特定作者的所有提交

12

我想回退某个作者在4天前以来的所有提交。我该怎么做?

为了获取所有sha1(带有一些噪音),我可以使用以下命令:

git log --author=Mohsen --pretty=one --since=4.days

如果您正在使用Github,网络视图可能会向您展示需要执行git reset的位置。另外,您想要执行“还原”(revert)还是“重置”(reset)?它们有一点不同。 - BlackVegetable
还有其他人的提交。我不想重置回去。 - Mohsen
1个回答

15

您需要给git log命令加上format:%H选项,并使用循环:

您必须向git log提供format:%H,并使用循环:

for sha in `git log --pretty=format:%H --author=Mohsen --since=4.days`; do
  git revert --no-edit $sha
done

这将创建每个还原操作一个提交。删除--no-edit选项,以便在每个还原操作上交互式修改提交消息。

或者,如果你想要创建一个大还原操作提交:

for sha in `git log --pretty=format:%H`; do sharange="$sharange $sha"; done
git revert $sharange --no-commit
git commit -m "reverted commits $sharange"

谢谢你!但是当出现冲突时,它并不会真正停止。 - Mohsen
4
如果出现冲突,你会被停止并可以通过 git revert --continue 继续进行撤销操作。 - CharlesB
很棒的答案,但我需要在其中加入更多指令。如果出现冲突,我需要接受—theirs更改,并且如果已经合并,我需要使用“git revert $sha -m 1;”你能帮我吗? - Vladislav Shcherbakov
1
您可以进行一次单独的大型回退提交,并手动接受更改吗? - CharlesB
1
我在我的分支中有合并,我需要将它们还原。 - Vladislav Shcherbakov
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接