使 Git 特性分支保持最新的更简单方法

我想知道是否有人有更好的建议来保持特性分支与它的父分支同步。

我们通常有多个功能分支,它们一次处理多个功能分支,每个功能分支都来源于我们的 develop分支。对于特性分支来说,一天几次合并到 develop中是相当常见的。

为了跟上变化(比如解决冲突) ,我发现我需要使我正在积极工作的特性分支与 develop保持同步。

为此,我每天运行几次以下命令:

git checkout develop
git pull
git checkout feature/foo
git merge develop
git push

最后一个 git push,我通常只有在与其他人在特性分支上工作时才这样做。

有没有更好或更方便的方法来做到这一点?

124876 次浏览

Git 实际上是为了将您经常做的事情包装到脚本中,然后调用脚本而设置的。上述情况并没有太多的变化。它们都需要拉动上游分支,然后将您的变更与上游的变更集成。有些东西可能会缩短你的时间:

git checkout feature/foo
git fetch --all
git merge --into-name=develop origin/develop
git rebase develop

这样你就可以简单地在一个镜头中拉动所有的上游分支而不需要切换到另一个分支。与合并相比,rebase 可能是您更喜欢的一种操作,但这通常是个人的选择,具体取决于您希望历史记录看起来如何。

为什么不编写一个运行这些命令的脚本呢?

使用文本创建 merge-develop.sh

#!/bin/bash
git checkout develop
git pull
git checkout feature/$1
git merge develop
git push

然后简单地运行 merge-develop.sh foo

Another option is to fetch with target, which allows you to pull develop without checkout:

git checkout feature/foo
git fetch origin develop:develop
git rebase develop