如何还原某些用户在 GIT 存储库中所做的更改

Posted

技术标签:

【中文标题】如何还原某些用户在 GIT 存储库中所做的更改【英文标题】:How To Revert Changes made by Some User in GIT Repository 【发布时间】:2012-09-15 17:44:06 【问题描述】:

我有一个 GIT 存储库,其中许多用户(比如 A、B、.....X)提交了该文件。 我想删除或恢复用户“X”提交的所有文件。

有可能还是我必须手动执行?

【问题讨论】:

什么是“文件”?是否有需要还原的特定文件,或者您想摆脱该用户的所有提交? 是的,简而言之,我们需要恢复 X 用户所做的所有更改。就像应用一个可以在不影响其他用户提交的情况下恢复更改的补丁一样。 【参考方案1】:

试试这个:

git log --author=X --format="%H" | xargs git revert

管道的第一部分生成用户名与正则表达式 (!) X 匹配的所有提交的 SHA1;第二部分在这些提交上调用git revert。但是,如果其中一个提交未能完全恢复,您可能只想查看

的输出
git log --author=X --oneline

并手动还原。

【讨论】:

我建议设置一个提交限制范围,例如git log --author=X 1234fde...master 不幸的是,如果更改足够大以至于可以还原,那么您可能最终需要手动还原每个并解决冲突方式。【参考方案2】:

我相信,您可以为此使用 git revert。有关详细信息,请参阅git manual section。

要点是你可以说:

git 还原 您要撤消的提交的 id 在哪里,它会尝试撤消它。

【讨论】:

以上是关于如何还原某些用户在 GIT 存储库中所做的更改的主要内容,如果未能解决你的问题,请参考以下文章

如何在Git还原后返回本地存储库中的代码

text 还原本地git存储库中的文件权限更改

忽略或跳过 Git 上的某些提交 [重复]

有啥方法可以在特定时间自动提交 git 中的更改

如何在本地存储 javascript 函数所做的 css 更改?

将原始 GitHub 存储库中的新更新拉入分叉的 GitHub 存储库