Git - 推送时自动变基

5
在处理Git项目时,我希望在每次git push之前运行git pull --rebase。但是,我的团队中有些开发人员经常忘记在推送之前调用git pull --rebase。因此,Git/Gerrit会自动执行合并操作,这会创建一个格式不正确的提交消息。我想避免这种自动合并。
我想配置客户端的Git,以便当开发人员运行git push时,git pull --rebase会自动发生。有什么办法吗?

2
简单来说,你可以让所有开发人员创建一个别名来代替 git push,并公开谴责任何不使用它的人。 :P - merlin2011
how to do that? - Sazzad Hissain Khan
更严肃地说,你所说的设置Git是什么意思?从技术上讲,所有客户端的Git配置都是Git的一部分。 - merlin2011
我是指客户端的Git配置。@merlin2011 - Sazzad Hissain Khan
1个回答

4
告诉所有开发者,在克隆代码后,需要将以下内容添加到他们的.git/config文件中。然后要求他们使用git goodpush代替git push
[alias]
        goodpush = "!git pull --rebase && git push"

这个配置也可以放在用户主目录下的.gitconfig文件中,以避免为每个克隆的存储库执行此操作。

请注意,由于这里所讨论的原因,别名不能是push,因此您将不得不提供一些激励措施或培训您的开发人员不再直接使用push

好处是,当有人意外使用push时,您会立即收到格式错误的提交消息,并知道要与谁交流。


@SazzadHissainKhan,目前的实现中不可以。你需要根据你期望并想要传递给这两个命令的参数来适当地传递参数。 - merlin2011
1
别名中如何使用参数? - Sazzad Hissain Khan
@SazzadHissainKhan,这里有解答:(https://dev59.com/4HA75IYBdhLWcg3wYYBQ)。请在使用前注意问题和每个答案下面的评论。 - merlin2011
你太棒了!@merlin2011 - Sazzad Hissain Khan
1
@SazzadHissainKhan,感谢您,祝愿您训练开发人员成功切换!:) - merlin2011
如果需要使用参数,请使用 git config --global alias.goodpush '!rebaseAndPush() { git pull --rebase && git push origin HEAD:refs/for/$1; }; rebaseAndPush' - Sazzad Hissain Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接