1

我的团队使用 git 的功能分支工作流程。

我想以某种方式git pull upstream branchname将上游仓库中的 a 配置为 always git pull --ff-only upstream branchname。那可能吗?

如果我可以将整个upstream仓库配置为只允许--ff-only拉取,我也会很高兴。

细节

我们的主要集成分支develop位于主要的上游 repo 中,各个功能分支从开发开始,进行更改,然后提出拉取请求以将功能分支合并回开发。

问题是我们的许多开发人员并不像他们应有的那样精通 git,并且他们不断弄乱本地 repodevelopdevelop.

他们没有注意到这种分歧。然后他们从他们的 borked 创建一个特性分支develop,直到他们提出他们的拉取请求才意识到这一点,这突然带来了大量的废话。如果幸运的话,一位精明的审阅者会告诉他们通过变基来清理他们的拉取请求。但是时不时地,一个混乱的拉取请求会被合并回来,这会扰乱我们的上游历史。

解决方法

--ff-only我对这些新手 git-folks 的建议是在从上游拉取时始终使用该选项,以强制他们的本地develop分支保持上游 repo 的完美副本。

如果他们的本地副本develop与上游不同,那么--ff-only当他们下次尝试拉取时,该选项将向他们大喊大叫。这种大喊大叫将迫使他们解决真正的问题。

但他们是 git-n00bs,所以他们经常甚至不明白我在推荐什么,只是继续把事情搞砸。

我会尝试所有适当的胡萝卜/大棒激励技术(人类!我知道,对吗?),但如果我能以某种方式使用训练轮配置他们的本地存储库--ff-only,那么我的审查负担就会减轻(我的开发人员将被迫学习更好的 git 技术)。

4

2 回答 2

1

您可以为此创建一个git 别名,例如:

git config --global alias.update 'pull --ff-only'

然后告诉您的用户使用它而不是pull

git update upstream branchname
于 2015-03-27T20:07:49.977 回答
0

警告:未记录的黑客攻击

git pull命令实际上是一个 shell 脚本,通常可以在libexec/git-core/git-pull您的 git 安装目录中找到。该脚本在内部按顺序调用git fetchgit merge命令。

从技术上讲,您可以打开此文件并根据自己的喜好对其进行编辑。例如:将ff_onlyshell 变量初始化为'--ff-only'而不是'', 将完成想要的操作,但可能与--ff用户可能明确指定的其他选项冲突。当然,您也可以进一步修改脚本以适应这种情况。

但是请注意,安装新版本的 git 很可能会覆盖您的更改。这一切都取决于你有多大的决心去完成你想做的事情。

于 2015-03-27T21:06:40.070 回答