如何从我没有强制推送权限的主分支中删除包含其历史记录的文件(删除历史记录很重要)?

Posted

技术标签:

【中文标题】如何从我没有强制推送权限的主分支中删除包含其历史记录的文件(删除历史记录很重要)?【英文标题】:How to remove a file including its history (removing history is important) from master branch where I don't have force push permission? 【发布时间】:2020-11-17 06:37:18 【问题描述】:

在下面试过但没有用。

    从 master 创建了我的本地分支。 在我的本地分支中运行此命令并将其推送到远程。我能够从我的分支中删除文件(包括其历史记录)。 $ git filter-branch --index-filter 'git rm --cached --ignore-unmatch Folder1/Folder2/File1.csv' HEAD $ git push --force 提出合并到主分支的拉取请求。由于 filter-branch 的工作方式,PR 在多次提交中得到提升。

PR完成后,发现文件没有从master分支中删除

我无法在 master 分支上直接运行“git filter-branch”,因为我没有强制推送权限。

有没有办法通过拉取请求从主分支中删除这个 File1.csv,包括它的历史记录(由于文件中的秘密内容,删除历史记录很重要)?

【问题讨论】:

简短回答:没有强制推送权限,您无法更改遥控器的历史记录。 您可以联系存储库管理员,但我会建议您使这些机密无效。 它没有秘密,但有其他不能失效的重要信息。如果我联系 repo 管理员,git filter-branch (因为它会引发多个提交)是最好的选择,或者我们可以尝试其他一些命令。我必须向 repo 管理员提供确切的命令,因为 repo 属于我的团队。 联系存储库管理员。 但请注意,每个拉取它的用户都拥有它,并且也需要手动将其从计算机中删除(例如,通过重新克隆存储库) 【参考方案1】:

如果没有强制推送,您将无法在遥控器上重写历史记录。抱歉,您尝试执行的操作是不可能的。

【讨论】:

以上是关于如何从我没有强制推送权限的主分支中删除包含其历史记录的文件(删除历史记录很重要)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将代码从新的本地文件夹推送到现有 Github 存储库的主分支并保留提交历史记录?

git怎么控制成员的权限

如何从我没有修改的拉取请求中删除文件

git删除所有提交历史记录

如何从我的 iOS 应用程序中删除推送通知?

从SVN历史列出作者,包括已删除(未合并)的分支