如何避免来自其他分支的不需要的合并(git)

时间:2013-09-12 04:21:44

标签: git merge

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

我试图做的是要求开发人员不要使用'git pull origin branchname',而只是使用'git pull'。 (本地分支应该跟踪到遥控器...)。 通常情况下,这种方法对我们很有效,但事故可能会发生,我相信有一种方法可以避免它。

2 个答案:

答案 0 :(得分:1)

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

另一种方法是使用git钩子来确保这个规则,但你必须能够准确地定义规则。由于pull只是fetch + merge,有时您需要将develop合并到master(部署新版本时),很难定义。

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

答案 1 :(得分:0)

你只能减少这种可能性,而不是不可能(有人总是故意搞砸了事情:-))。

如果您使用典型的“通过ssh推送更改”模式,您可以执行的操作是使用预接收挂钩设置裸仓库(人们从中获取/拉动以及向其推送),检查对于这种合并并且不允许它们。当然,可能应该允许一些获得批准的人,但你也可以将其添加到钩子中。

这是非常重要的,并且快速搜索没有找到我喜欢的。