git - 摆脱几个错误的提交
问题描述
我有我不跟踪的仓库.gitignore
,有人提交了node_modules
文件夹,后来我们决定取消跟踪它。现在同一个人(git 新手)在再次取消跟踪之前提交了 '.gitignore' 几次提交。现在我们遇到这样的情况,如果我们检查旧的提交,它会从 repo 中删除几个未跟踪的文件,并且还会造成“vs code”由于数千个未跟踪的文件而变慢的情况。处理这种情况的最佳方法是什么?我想我需要压缩这些提交并将它们保存在单独的分支上,这样没有人会意外地检查它。我还有其他选择吗?
随着事情的发展,
.gitignore was never tracked
node_modules were tracked
.gitignore was tracked
node_modules was untracked
.gitingore was untracked
解决方案
形成你所描述的顶部master
是固定的,问题只是有人检查了旧版本的代码,其中的东西被破坏了。
没有简单的方法可以修复它。为此,您需要重写整个历史记录并确保存储库的所有副本都使用新历史记录进行更新。这是组织的噩梦,您将永远错过一个回购,该回购将被推回主存储库,您将回到初始状态。所以不要尝试。
唯一合理的解决方案是当有人签出旧版本的代码时解决方案。如果这是某个分支,例如:release-1.x.x
那么只需选择一个提交即可将这个问题修复到该分支。
如果开发人员必须将代码签出到特定版本/提交,只要此版本的代码需要一些维护,他们就必须忍受这个问题。
重要的是从这类问题中吸取教训:
.gitignore
仅当您开始新项目时,始终创建并签入存储库。- git hooks 配置起来有点困难,但它是保护 repo 免受不必要损坏的绝佳解决方案
- 请注意,有工具 github/gitlab/bitbucket/... 允许您配置拉取请求并配置 git 挂钩以保护特定分支。通过拉取请求代码审查是保护您免受意外(未被
.gitignore
git 钩子覆盖)错误更改的好方法
- 请注意,有工具 github/gitlab/bitbucket/... 允许您配置拉取请求并配置 git 挂钩以保护特定分支。通过拉取请求代码审查是保护您免受意外(未被
- 当实习生加入一个项目时,确保他的 git 技能至少是基本的,并且他了解存储库应该跟踪什么,不应该跟踪什么。
推荐阅读
- ios - 如何在 iOS 中制作如下图所示的仪表视图?
- oauth - wicked.io 能否与 keycloak 集成,keycloak 将提供客户端 ID 和机密,当然还有身份验证?
- symfony - 显示来自实体的多个数据
- php - 升级到 TYPO3 8 后,无法从数据库中获取数据
- servlets - 百里香找不到css文件
- makefile - 如何修复“make (e=2): 系统找不到指定的文件”。
- python - 具有字符串列到整数列表列的数据框
- javascript - 无法使用 React Native 中的对象访问数组中的值
- tcl - 正则表达式匹配输出,而它不应该
- php - 未定义的索引错误 & 没有来自 POST/GET 的输出