我刚开始与 GitHub 合作。
我有一个包含不同目录的私人存储库。
我想以只读方式与协作者共享一个特定目录。
我读到了这篇文章:以只读方式与特定用户共享 GitHub 上的私有 git 存储库
还有这个:与使用 Github 的人共享 git repo 的一个分支的好方法是什么?
然而,我仍然不清楚。
1)创建一个孤立分支将允许我像在 master 中那样不断更新并提交?
理想情况下,我能够继续更新该分支,并且协作者可以看到这些更改,但看不到存储库的其他部分。
仅使用此目录创建一个新的存储库或共享文件当然可以完成这项工作,但我想知道并了解 github 是否可以实现这种理想的场景。
为了确保某人只能看到一个分支,您必须仅使用该分支创建一个单独的存储库。我将其称为share repo下面的。
GitHub 没有完全在 GitHub 上执行此操作的 UI,因此您必须首先在share repo本地创建,然后将其推送到 GitHub 上新的相应共享存储库。
本地share repo将有两个git remote链接:一个用于从 GitHub 上的主存储库获取单个分支,第二个用于将其推送到share repoGitHub 上。
创建本地share repo.
不要使用git clone,因为它会复制所有内容。相反,手动创建本地共享存储库的目录,cd进入其中,然后运行git init.
设置git remote指向主 GitHub 存储库的指向。为此远程链接选择一个有用的名称,这样您就不会将其与您将在步骤 2 中创建的另一个名称混淆。一个好的标准名称是upstream,但请选择对您最有帮助的名称。不要命名它origin,这往往意味着完整的克隆。
用于git fetch仅获取单个分支(如果您想共享多个分支,则可以获取多个特定分支)。
创建 GitHub share repo。
在 GitHub 上,创建新的 GitHub share repo,供您的协作者使用。随意命名。
在您的本地share repo,设置一个git remote新的 GitHub share repo。再次,如上所述选择一个好名字。将共享分支推送到此远程。
用于git push --force将分支推送到 GitHub share repo。请参阅下文了解我建议使用的原因--force。
使这个新的存储库可供任何协作者使用。
为了使共享分支与主存储库保持同步,请使用本地share repo从主存储库获取提交并将其推送到 GitHub share repo。
您可以使用 GitHub 允许您的帐户和存储库类型使用的任何访问控制,但这确实没有必要。
这share repo只是主存储库分支的副本upstream。这不是来源。只是告诉他们不要写信给它。
但即使他们这样做,对其所做的任何更改都不会向上游传播(除非您进行更改)。当您将更改推送到下游(从主存储库到 GitHub )时share repo,您可以用来git push -force覆盖无意中对共享所做的任何更改。然后将保证该分支是上游版本的精确副本。
如果有任何不清楚的地方请告诉我,我可以补充我的答案。