首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以通过公关强制推送吗?想要重写历史吗

可以通过公关强制推送吗?想要重写历史吗
EN

Stack Overflow用户
提问于 2019-08-18 02:25:24
回答 1查看 853关注 0票数 4

我有一个包含数千个垃圾二进制文件提交的repo。我正在使用git扩展插件来定位大文件及其提交。我们正在使用git flow与PR,仅用于开发和掌握。我想确认这是/将是清理此回购的最佳方式。

代码语言:javascript
运行
复制
git reset --hard
git pull develop
git checkout -b CleanUpRepo

运行这个插件,它或多或少是一个很好的git过滤器分支(它的指令是重置的,选择要删除的文件,强制推送)一旦清理完成,我就提交更改

代码语言:javascript
运行
复制
git add .    
git commit -m "removed a ton of files" 
git push -f 

现在我应该有一个像样的起源分支,我可以通过公关来开发和掌握分支?这是正确的方法吗?我假设这会正确地重写历史?我们有大量的流氓起源分支,随着时间的推移,人们已经从大师那里分支出来了。我对git的理解还不够深入,不能对此充满信心。我检查了这个插件做了什么,它似乎做了以下事情(我假设参数是散列或文件名等),更专注于命令:

代码语言:javascript
运行
复制
 "{0}\" filter-branch --index-filter \"git rm -r -f --cached --ignore-unmatch {1}\" --prune-empty -- --all"
 for /f %%a IN ('\"{0}\" for-each-ref --format=%%^(refname^) 
 refs/original/') DO \"{0}\" update-ref -d %%a",
 \"{0}\" reflog expire --expire=now --all",
 "\"{0}\" gc --aggressive --prune=now",
EN

回答 1

Stack Overflow用户

发布于 2019-08-18 15:49:38

您必须获得一次性许可,才能推送到master并覆盖整个repo。这将推送所有标签的新版本,它将更改repo的所有用户的分支指针(并随后中断所有分支和未完成的拉取请求。

拉取请求将特定分支从一个存储库拉入到另一个存储库中,但不会清理现有分支中的数据。此外,它还会尝试将内容合并到旧的分支中,从而造成混乱。如果您选择rebase而不是merge,则拉取请求将被阻止,因为PR不能基于当前head进行重新设置。

根据托管平台的不同,您删除的所有提交仍将存在于远程repo中,因为它们不会从远程服务器(例如Azure Repos )中删除。解决这个问题的唯一方法是删除/重命名存储库,然后将清理后的内容推入新的存储库。

在过去,我使用BFG Repo Cleaner来处理这些情况。这听起来比你用过的工具更友好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57538872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档