更简单的基于主的工作流程

时间:2016-12-15 16:23:47

标签: git

我当前基于主的工作流程是在master中开发修补程序,在develop分支中开发新功能。什么时候发布我做以下事情:

git checkout master && git pull
git checkout develop && git rebase master
git checkout master && git merge develop
git push

我可以用更少的命令执行相同的操作吗?如果可能,我想省略多个checkout

1 个答案:

答案 0 :(得分:1)

让我们看看。 (这假设您的遥控器名为origin

git fetch origin master
git rebase origin/master develop
git checkout master && git merge --ff-only develop
git push

注释:

  • git rebase origin/master developgit checkout develop && git rebase master

  • 完全相同
  • 我在合并时使用--ff-only是为了清晰,因为这个合并不会创建任何新的提交,只需移动分支指针。

好的,所以最初的新代码仍然是4行,但checkout只出现一次。   您可以使用this question中的提示稍微减少结帐,但我会忽略这一点。

您可以通过使用感叹号({{}启动带有多个命令(as seen here)的 git别名来进一步减少您的输入(但不是git执行时间) 1}})。

你可以像这样创建一个别名:

!

然后您将使用如下命令:git config --global alias.pushDevelop '!git fetch origin/master; git rebase origin/master develop; git checkout master; git merge --ff-only develop; git push'

您还可以使用git pushDevelop替换第三行,并在git branch -f master分支上重新创建master分支,但这可能会导致跟踪信息丢失。 (此命令强制创建分支developmaster将是必需的,因为git不能有两个具有相同名称的分支。