“git checkout main_branch; git merge topic_branch”的别名?

时间:2009-12-31 08:24:04

标签: git workflow alias

在我们的团队中,我们使用开发,登台和主分支以及问题分支。通过这个工作流程,我发现自己做了很多以下事情:

例如在开发分支中:

git checkout staging; git merge development

有没有人有这个简单的别名?

应该是这样的:

merge_with master

会做:

git checkout master; git merge previous_branch

6 个答案:

答案 0 :(得分:2)

git checkout master; git merge HEAD@{1}

您可以使用以下命令为其指定别名:

git config alias.mm '!git checkout master; git merge HEAD@{1}'

这样git mm会将您当前的分支合并为主分支。

答案 1 :(得分:1)

如果发生冲突,

git merge总是在当前分支上执行,因此您必须先检查暂存分支。

但是,如果允许使用线性历史记录,则可以使用git rebase development staging

正如迈克尔所说,你总能做一个别名。

编辑:将此添加到.git / config将执行此操作

[alias]
    merge_to = !sh -c 'CURRENT=$(git symbolic-ref HEAD) && git checkout $1 && git merge $CURRENT' -

答案 2 :(得分:0)

git config alias.thething '!git checkout staging ; git merge $1'

应该给你一个

git thething development

答案 3 :(得分:0)

这是我的意思,除了它还没有用。

branch="$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')"; echo "git checkout master; git merge $branch"

首先,它找出当前分支是什么。然后它使用它来确定要合并的分支。

接下来就是找出如何附加别名参数......

答案 4 :(得分:0)

感谢您的帮助。所有这些都没有完全符合我的要求,但确实让我朝着正确的方向前进。

我在〜/ .bash_login中添加了以下内容。对于每个git存储库“merge_to somebranch”都会执行git checkout somebranch; git merge previousbranch。

# Git functions to quickly merge branches
# e.g. merge_to staging
function current_branch { ref=$(git symbolic-ref HEAD 2> /dev/null); echo ${ref#refs/heads/} }
function merge_to       { branch=`eval current_branch`; git checkout "$@" && git merge $branch }

答案 5 :(得分:0)

我永远这样做,特别是因为在我们的一个项目中,我们有几个微妙不同的生产分支。部署修复/更新可能会让您的手指感到疲惫。

对于你所有的Windows:我刚刚在我的%path%中创建了一个 merge.bat 文件,它包含:

git checkout %1 && git merge %2 --verbose

然后我所做的就是

merge foo bar

并运行:

git checkout foo 
git merge bar --verbose