【问题标题】:How to block some specific type of file comitting in Git?如何在 Git 中阻止某些特定类型的文件提交?
【发布时间】:2017-09-25 05:40:06
【问题描述】:

是否可以阻止git commit中的特定文件类型(.dll, .exe)

我知道我们可以通过.gitignore 文件来做到这一点。但是我有500多个repo,所以在每个项目中添加.gitignore文件并不容易。

我们可以通过per-receive 钩子做同样的事情,但我得到Restrict the specific type file commit in Git

有什么想法吗?

【问题讨论】:

  • 如果唯一的问题是将 .gitignore 文件添加到每个 repo,您​​可以只使用系统范围的 gitignore 或用户范围的 gitignore 来代替。
  • 1) 一个全局或系统范围的 gitignore,它忽略 .dll.exe,2) 一个全局或系统范围的本地 pre-commit,它删除了 .dll 和 @987654336 的更改@ 来自索引,3) 服务器端 pre-receive 使任何更改 .dll.exe 的新提交失败。第三个确保不会将此类提交合并到祝福存储库中。第一和第二给用户快速检查和帮助。
  • @ElpieKay 我尝试了第三个想法manually,但它对我不起作用!对使用 ruby​​ 代码有什么建议吗?
  • 我不了解 Ruby。但是您链接中的pre-receive 似乎不对。 git diff --cached 不能在这里工作。您需要从标准输入中获取old-valuenew-valueref-name。然后使用git log old-value..new-value --pretty=format:"" --name-only 之类的命令来获取更改的文件列表。如果列表包含任何.dll.exe,则以非零值退出以使推送失败。关于pre-receive,请看git-scm.com/docs/githooks.html#pre-receive

标签: git gitignore


【解决方案1】:

您可以创建一个全局.gitignore 文件。

如何 - https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

打开终端。

在终端中运行以下命令:

git config --global core.excludesfile ~/.gitignore_global

【讨论】:

  • 适合 GitLab 吗?
  • 是的。它在您的本地计算机中。无论您使用哪个版本控制网站。
  • 好吧,我还有一个疑问,那就是如果我在我的 gitlab 服务器机器上做同样的事情,它会起作用吗?这也是全局工作还是配置gitignore的单个用户(它在您的本地机器上)?
  • 这将在您配置 .gitignore 文件的任何地方工作。如果您有多个用户,更好的解决方案是将其放在项目级别。
  • 这会阻止使用commit -f 标志吗?
猜你喜欢
  • 2012-10-22
  • 2020-12-22
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2015-06-24
  • 2019-03-22
相关资源
最近更新 更多