首页 > 解决方案 > 我可以使用 .gitignore 或 .git/info/exclude 来阻止特定用户拉/推被认为对他们“限制”的文件吗?

问题描述

我正在使用 Windows Git 和 OpenSSH 在 Windows Server 2008 上托管一个裸存储库。出于法律原因,我希望特定用户无法访问某些文件,但所有其他用户仍可访问。换句话说,我希望特定用户忽略某些“受限”文件(不可拉取)。

假设我们有两个用户(管理员和访客)和一个带有 2 个文件的 Git 存储库:(a.txt 和 b.txt)。

假设“b.txt”是访客不应访问的受限文件。

git clone guest@ipaddress:C:/path/to/repository.git或者 git pull guest@ipaddress:C:/path/to/repository.git

应该克隆或提取“a.txt”

git clone administrator@ipaddress:C:/path/to/repository.git或者 git pull administrator@ipaddress:C:/path/to/repository.git

应该克隆或拉两个文件。

有没有办法用 .gitignore 或 .git/info/exclude 来实现这个结果?

标签: windowsgitgitignoregit-bashopenssh

解决方案


有没有办法用 .gitignore 或 .git/info/exclude 来实现这个结果?

不。

Git 完全是关于提交,以及拉(真的,git fetch)和推送操作转移提交。提交包含文件——提交部分由数据(快照)和部分元数据(关于快照的信息)组成——你要么有一个提交,在这种情况下你拥有所有文件,要么你没有提交,在这种情况下,您没有所有文件。

出于任何原因(法律、公司或其他原因)需要限制的文件必须要么根本不在 Git 中,要么以某种预先保护的方式(例如,加密)存储。一般来说,“根本不在 Git 中”的方法往往效果最好。考虑在 Git 中存储存储实际文件的受限网站的 URL。


推荐阅读