创建一个 git 挂钩以防止合并到本地存储库中的特定分支,但允许从远程拉取
Create a git hook to prevent merges to specific branches in local repository but allows pulling from a remote
这可能只是我的一个误会git,但我的情况是这样的:
我有一个 master
分支,我只想在其中使用稳定的工作代码。此分支的任何添加都必须来自 bitbucket 中的拉取请求(可以是 github 或其他东西,它只是我们使用的工具)。所以我想在我的本地存储库中创建一个 git 挂钩,以防止任何合并到 master
分支,但这也允许我从我在 bitbucket 的远程存储库中进行 fetch/pull 更改。
我已经 git 配置为禁止快进合并。
我研究了这些解决方案,它们提供了类似的东西,也就是说,can/can 没有合并到 master 的分支的白名单和黑名单:
Git hook prevent merging specific branch
https://bl.ocks.org/slattery/5eea0d6ca64687ecba6b
此外,此解决方案阻止我直接提交到 master,这也非常有用:
但是我不清楚这些是否会阻止我将 bitbucket/github 中的拉取请求所做的更改拉入我的本地工作存储库。
非常感谢!
[编辑]
正如下面所建议的,我也已经在我的 bitbucket 存储库中设置了 branch permissions,但这阻止了我只能推送合并的 master
分支。我想防止在本地合并到 master
。
So I want to create a git hook in my local repository to prevent any merging into the master branch (...).
你在保护你的 local master
分支免受什么影响?你自己?
无论如何,解决方案是设置 bitbucket 存储库,这样您就无法将更改推送到 master
。这意味着即使你在本地搞砸了,你也无法将更改推送到远程,它们必须通过拉取请求来完成。
Bitbucket 分支权限在 Using branch permissions 中进行了解释。
I'm not clear if any of these would prevent me from pulling in changes made by pull-requests in bitbucket/github into my local working repository.
不需要,只要:
- 你从另一个分支而不是 master
- 或者你确实从
origin/master
拉取了新的提交到你的本地 master,但是检测到 "from" 分支是一个 origin/xxx 分支(在这种情况下,你允许提交到继续)
任何 client-side hooks 的问题是您需要 deploy/distribute 挂钩所有团队成员。
我喜欢你的想法,但我认为你应该尝试保护你的远程 master,然后让你的开发人员在各自的主题分支中创建他们的代码,而不是在他们的本地 master 分支中。
尝试查看 git 的这些用法:
microsoft git usage
这可能只是我的一个误会git,但我的情况是这样的:
我有一个 master
分支,我只想在其中使用稳定的工作代码。此分支的任何添加都必须来自 bitbucket 中的拉取请求(可以是 github 或其他东西,它只是我们使用的工具)。所以我想在我的本地存储库中创建一个 git 挂钩,以防止任何合并到 master
分支,但这也允许我从我在 bitbucket 的远程存储库中进行 fetch/pull 更改。
我已经 git 配置为禁止快进合并。
我研究了这些解决方案,它们提供了类似的东西,也就是说,can/can 没有合并到 master 的分支的白名单和黑名单:
Git hook prevent merging specific branch
https://bl.ocks.org/slattery/5eea0d6ca64687ecba6b
此外,此解决方案阻止我直接提交到 master,这也非常有用:
但是我不清楚这些是否会阻止我将 bitbucket/github 中的拉取请求所做的更改拉入我的本地工作存储库。
非常感谢!
[编辑]
正如下面所建议的,我也已经在我的 bitbucket 存储库中设置了 branch permissions,但这阻止了我只能推送合并的 master
分支。我想防止在本地合并到 master
。
So I want to create a git hook in my local repository to prevent any merging into the master branch (...).
你在保护你的 local master
分支免受什么影响?你自己?
无论如何,解决方案是设置 bitbucket 存储库,这样您就无法将更改推送到 master
。这意味着即使你在本地搞砸了,你也无法将更改推送到远程,它们必须通过拉取请求来完成。
Bitbucket 分支权限在 Using branch permissions 中进行了解释。
I'm not clear if any of these would prevent me from pulling in changes made by pull-requests in bitbucket/github into my local working repository.
不需要,只要:
- 你从另一个分支而不是 master
- 或者你确实从
origin/master
拉取了新的提交到你的本地 master,但是检测到 "from" 分支是一个 origin/xxx 分支(在这种情况下,你允许提交到继续)
任何 client-side hooks 的问题是您需要 deploy/distribute 挂钩所有团队成员。
我喜欢你的想法,但我认为你应该尝试保护你的远程 master,然后让你的开发人员在各自的主题分支中创建他们的代码,而不是在他们的本地 master 分支中。
尝试查看 git 的这些用法: microsoft git usage