【问题标题】:Git - preventing accidental commits on specific folderGit - 防止对特定文件夹的意外提交
【发布时间】:2017-08-08 01:17:54
【问题描述】:

各位开发者您好。

我有一个存储库,其中有一个子文件夹,其中包含用作内部框架的代码文件。假设这个文件夹名为package

我保留这个包文件,因为这样可以保证更容易构建,而且我们使用的特定框架缺少包管理器。

package 文件夹中的文件应由单个开发人员维护(可能在单独的分支上),并少量更新。

现在,我想防止意外提交 package 文件夹中的文件

有什么方法可以完成这个任务吗?

我正在考虑不同的解决方案:

  • git 钩子;但用户很容易忘记启用它们;
  • 替代包管理器;但它们应该很容易添加,因为我们已经使用了 npm 和 nuget,我不想管理太多工具;
  • git 子模块;但是许多开发人员很难弄清楚如何更新/同步/等,并且构建包的 repo 与共享的文件不同。所以我应该为这个包管理两个 repos,一个用于开发,一个用于分发。

我的头撞墙了...任何建议将不胜感激。

谢谢!

【问题讨论】:

  • 你可以use npm to install from a private git repo。您只需要拥有用于访问主存储库的相同凭据,因为它也是私有的。
  • 但是如何防止对包文件夹的提交?我错过了什么吗?

标签: git


【解决方案1】:

我觉得这作为评论会更好,但因为我还不能这样做......

对于所有其他开发人员,您能否不将此包目录添加到他们的 .git-ignore 文件中?对于维护它的用户 - 可能会更新 .git-ignore 以允许包在需要时通过,然后执行另一个更改以再次忽略包目录。

我意识到这是一种蛮力强制它,但它仍然可能是一个潜在的解决方案,尽管不是最优雅的解决方案。

【讨论】:

  • AFAICT,如果文件在存储库中被跟踪,即使它们被 gitignore 匹配,它们的更改也会被跟踪。试试这个:提交一个文件,然后编辑 gitignore 以忽略它,然后更新他的内容。 Git 状态应该显示更新的文件,即使它应该被忽略。要从 repo 中正确删除文件,您需要一个 git rm --cached。
  • 我同意你说的。管理它的人必须不跟踪包目录。或者,您提到使用单独的分支,那么this 问题呢,除了用您的包目录替换供应商?
猜你喜欢
  • 2017-02-18
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 2014-08-04
相关资源
最近更新 更多