0

我看到这个错误在我们的团队中不止一次发生。假设我们有两个分支:Dev 和 Prod。用户切换到 prod 分支,提交更改,然后,他没有执行 'git pull origin prod' 来获取 prod 上的最后更改,而是错误地执行了 'git pull origin dev'。结果,它将dev分支合并到prod中,这并不酷。

我试图做的是要求开发人员不要使用“git pull origin branchname”,而是只使用“git pull”。(为此,应将本地分支跟踪到远程..)。通常,这种方法对我们很有效,但是,事故可能会发生,我相信有办法以某种方式避免它。

4

2 回答 2

1

实现这一点的一个 hacky 方法是定义一些名为 bash 的函数git来包装 git 二进制文件的执行。如果第二个参数是“pull”,您可能会忽略第四个参数(分支名称),或者将其与您当前的分支名称进行比较。

另一种方法是使用 git hooks 来确保这些规则,但你必须能够准确地定义规则。由于 apull只是一个fetch+ merge,有时您会想要合并developmaster(在部署新版本时),因此很难定义。

很难指望技术能够解决人类行为的问题。让您的团队习惯于避免使用那些额外的参数,这将得到回报——也许在他们每次尝试将分支名称放在命令上时使用包装函数来警告他们。与他们交谈——这是解决这些问题的唯一方法。

于 2013-09-12T06:05:50.190 回答
0

您只能降低这种可能性,而不是不可能(有人总是会故意把事情搞砸:-))。

如果您使用典型的“通过 ssh 推送更改”模型,您可以做的是使用 pre-receive 钩子设置裸仓库(人们从中获取/拉取并推送到其中),以检查此类合并并禁止他们。当然,可能应该允许一些被批准的人,但您也可以将其添加到钩子中。

要做到这一点并非易事,快速搜索并没有找到我喜欢的。

于 2013-09-12T09:08:39.853 回答