我当前基于主的工作流程是在master
中开发修补程序,在develop
分支中开发新功能。什么时候发布我做以下事情:
git checkout master && git pull
git checkout develop && git rebase master
git checkout master && git merge develop
git push
我可以用更少的命令执行相同的操作吗?如果可能,我想省略多个checkout
。
答案 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 develop
与git 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
分支,但这可能会导致跟踪信息丢失。 (此命令强制创建分支develop
。master
将是必需的,因为git不能有两个具有相同名称的分支。