在我们的团队中,我们正在使用开发、登台和主分支以及分支来解决问题。通过这个工作流程,我发现自己做了很多以下事情:
例如在开发分支中:
git checkout staging; git merge development
有没有人有一个简单的别名?
它应该是这样的:
merge_with master
会做:
git checkout master; git merge previous_branch
git checkout master; git merge HEAD@{1}
您可以使用以下方法为其分配别名:
git config alias.mm '!git checkout master; git merge HEAD@{1}'
所以这git mm
会将你当前的分支合并到master中。
git merge
如果发生冲突,总是在当前分支上执行,因此您必须先签出暂存分支。
但是,如果允许线性历史,您可以使用git rebase development staging
.
正如迈克尔所说,您始终可以使用别名。
编辑:将此添加到 .git/config 即可
[alias]
merge_to = !sh -c 'CURRENT=$(git symbolic-ref HEAD) && git checkout $1 && git merge $CURRENT' -
git config alias.thething '!git checkout staging ; git merge $1'
应该给你一个
git thething development
这就是我的意思,但它还不起作用。
branch="$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')"; echo "git checkout master; git merge $branch"
首先它找出当前分支是什么。然后它使用它来确定要合并的分支。
所以接下来的事情是找出如何附加别名参数......
感谢你的帮助。没有人完全按照我的意愿去做,但确实让我朝着正确的方向前进。
我已将以下内容添加到 ~/.bash_login。对于每个 git 存储库“merge_to somebranch”都会执行 git checkout somebranch;git 合并上一个分支。
# 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 }
我一直在这样做,特别是因为在我们的一个项目中,我们有几个微妙不同的生产分支。部署修复/更新会使您的手指感到疲倦。
对于所有 Windows 主机:我刚刚在我的 %path% 某处创建了一个merge.bat文件,它包含:
git checkout %1 && git merge %2 --verbose
那么我所做的就是
merge foo bar
它运行:
git checkout foo
git merge bar --verbose