【问题标题】:TFS-Git Branch PoliciesTFS-Git 分支策略
【发布时间】:2017-10-17 18:39:07
【问题描述】:

我很难理解分支政策,我正在阅读以下文章https://www.visualstudio.com/en-us/docs/git/branch-policies

  1. 也许我读错了,但为什么在pull 上设置了策略而不是 push 似乎有点晚了
  2. 为什么不能阻止用户合并/推送,比如说一个分支到另一个分支?

我希望能够将features 推送到我的master branch,但我不希望有人将我的develop branch 合并到master branch

你能做这样的事吗?

【问题讨论】:

标签: git tfs


【解决方案1】:

分支策略类似于 TFS 中的签入策略概念。启用签入策略后,用户在对源代码管理进行签入时需要执行操作,例如,可能要求用户将工作项与变更集关联或添加签入注释。

同样,设置分支策略后,不能直接将更改推送到分支。 只能通过拉取请求对分支进行更改。

Pull request 是 TFS 中的一个功能名称,与 git 中的 pull/push 概念无关。

关于阻止用户合并/推送,是TFS中的另一个权限概念。只有拥有 Contribute 权限的用户才能将新提交推送到分支并锁定该分支。如果你对此感兴趣,可以看这里:Set branch permissions-GIT


更新

要将功能推送到我的主分支,您可以使用 git 命令

git push origin branch1:branch2

更多详情请参考这个问题:Push commits to another branch

因为我不希望有人将我的开发分支合并到主分支。您可以设置您的开发分支的权限,只是拒绝其他人对开发分支的贡献权限。(注意:这也将不允许他们向您的开发分支推送提交,TFS Git 中没有任何唯一与合并相关的权限)

如果你想使用分支策略,你可以通过设置必须通过你的代码审查来防止其他人合并你的开发分支。但是,您不能直接将功能推送到master branch。详细原因请参考 Martin's 回答中的第二段。

另一个解决方法是临时的locking your develop branch,它非常适合防止可能与重要合并发生冲突的新更改或将分支置于只读状态。

【讨论】:

  • 谢谢帕特里克,你必须跳过这么多圈似乎有点奇怪。我们希望我们的开发人员将他们的功能合并到开发分支,我们只是不希望他们直接合并到 master,因为某些功能可能会通过 UAT 而其他不会。所以本质上我们只希望将功能合并到 Masters。
  • @R4nc1d 知道了。如果是这样,您可以拒绝用户对 master 分支的贡献权限。他们只能在开发分支上工作,并且可以将本地功能推送到开发分支。还可以在项目管理员组中启用某些人的贡献权限,他们应该使用git rebase 命令将开发分支中的一些提交重新定位到主分支。毕竟,您不想将开发分支中的所有功能合并到 master 中。这是最好的流程。
  • 太棒了,让我试一试。
【解决方案2】:

政策是为“拉取请求”设置的,这是 TFS/VSTS 中的一项功能 - 类似于 GitHub - 您可以在其中创建“合并分支的请求”。这与git pullgit push 命令/工作流无关。

当您需要某个分支的拉取请求时,这不再允许用户直接git push 到该分支,而是要求他们推送到新分支并创建“拉取请求”以合并两个分支。然后,这些策略允许您设置所需的审阅者等要求(这将允许您拒绝合并到您的主分支)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2017-03-23
    • 2011-08-08
    • 2016-10-29
    • 2021-07-02
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多