git分支合并脚本
- 为什么要写这个脚本
- 工作中经常会有合并分支的操作,一开始也不以为然,后来发现如果更新频繁的话,根本就停不下来,昨天上午正好有空,就完成了下面的这个初版
- 可能存在的问题
- 一般的应用场景都是:从master分支里面拉取出新feature,bug, release分支,如果分支完成,则需要先合并在test分支里面,test分支测试完成后,合到master分支里面,这时候可能并不会直接上线,还有一个preview环境,其实这里用到的代码和线上一样,都是master里面的,那么问题来了
- 如果有两个人共同用一个分支开发,他刚更新的代码在测试上没有问题,过一段时间测试完成了,通知运维人员可以上预发布环境了,但是这个时候该功能分支的另外一个正好又提交了一个commit,这时会把最新的版本也合并了,说了半天,才说到重要,也就是每次合并之前都会有个pull --rebase操作
- 当然也可以再创建一些函数之类的,但是这样就失去了脚本的便利性,后面加一堆操作也不是很好,如果博友有好的建议,欢迎探讨^ _^一般只需要
mb dev_xxx_fix_xxx test就搞定了,额,这个名字是我建的一个软链没有其它的意思,only first letter of the merge branch
#!/bin/sh
# Author: zhang.wen
# Date: 2017-03-23 13:03
# VersionControlTools: git
#******************************
# $1 表示功能分支
# $2 要合并到的分支[ test|master ]
#******************************
# 退出状态码:
# -1表示没有找到此分支
# -2表示代码执行异常
MERGE_BRANCH=$1
TARGET_BRANCH=$2
function last_status()
{
if [ $? -eq 0 ]
then
return 0
else
exit -2
fi
}
function pull_latest_branch()
{
if git checkout $1 && git pull --rebase
then
last_status
fi
}
function check_branch()
{
if git branch | grep -q $1
then
return 0
else
echo "没有找到此分支, 现在从远程分支上拉取至本地"
pull_latest_branch
if git branch -rv | grep $1
then
git checkout -b $1 origin/$1
fi
fi
}
# $1表示要合并到的分支[目标分支],$2表示要合并的分支
function merge_branch()
{
if git checkout $1 && pull_latest_branch $1 && git merge $2
then
last_status
fi
}
# 接收一个参数,要推送的目标分支
function push_branch()
{
if git push origin $1 && git status
then
last_status
fi
}
function show_commit_id()
{
git log | head -5
}
function new_line()
{
echo
}
if [ $# -eq 0 ]
then
echo '请输入要合并的分支名, 用法如下:'
echo "$0 src_branch dst_branch"
exit 0
fi
echo -e "\\033[0;31;1m当前摘取的分支是:\\033[0m $MERGE_BRANCH"
echo -e "\\033[0;31;1m要合并到的分支是:\033[0m $TARGET_BRANCH"
check_branch $MERGE_BRANCH
new_line
echo -e "拉取\\033[0;32;1m $MERGE_BRANCH\\033[0m 最新代码"
pull_latest_branch $MERGE_BRANCH
new_line
echo -e "切换到\\033[0;32;1m $TARGET_BRANCH \\033[0m分支,合并\\033[0;32;1m $MERGE_BRANCH\\033[0m 最新代码"
merge_branch $TARGET_BRANCH $MERGE_BRANCH
push_branch $TARGET_BRANCH
new_line
echo -e "\\033[0;31;1m------------------ COMMIT ID ------------------\\033[0m"
show_commit_id
git分支合并脚本的更多相关文章
- Git分支合并冲突解决(续)
接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时, ...
- git分支合并解决冲突
git分支合并,解决冲突 1.手动解决冲突 手动解决冲突,需要使用编辑器,把所有文件中出现的冲突地方修改,然后再添加到暂存区再提交 >>>>>>brancha so ...
- git 分支合并时如何忽略某个文件
[转]git 分支合并时如何忽略某个文件 - 神奇的旋风 - 博客园 https://www.cnblogs.com/xuan52rock/p/13268872.html Git - git-merg ...
- Git 分支合并
理解核心 Git最初只有一个分支,所有后续分支都是直接或间接的从这个分支切出来的. 在任意两个分支上,向前追溯提交记录,都能找到一个最近的提交同时属于这两个分支,这个提交就是两个分支的分叉节点 分支合 ...
- Git分支合并选择
用Git进行多人协作开发时,必然会合并代码,解决冲突.然而合并代码也是需要点技巧的,如果对一些关键命令没有理解去使用的话,git的版本演进路线就会变得很乱,从而造成了日后维护的一些麻烦. Git上合并 ...
- git 分支合并 强制合并
常用的提交流程git add *.XXXgit commit -m "备注....." # 提交到本地分支git fetch git merge #"合并远程分支情况,如 ...
- Git分支合并冲突解决
前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...
- Git分支合并:Merge、Rebase的选择
git代码合并:Merge.Rebase的选择 - iTech - 博客园http://www.cnblogs.com/itech/p/5188932.html Git如何将一个分支的修改同步到另一个 ...
- git 分支合并冲突
准备新的feature1分支,继续我们的新分支开发 [root@node1 git]# git checkout -b feature1 D git/LICENSE.txt Switched to a ...
随机推荐
- 160406、mybatis批量删除
<deleteid="deleteCTQ" parameterType="java.lang.String"> DELETE FROM sqm_pr ...
- FTP服务工作原理
1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文 ...
- [iOS微博项目 - 3.5] - 封装业务
github: https://github.com/hellovoidworld/HVWWeibo A.封装微博业务 1.需求 把微博相关业务(读取.写微博) 界面控制器不需要知道微博操作细节( ...
- Storm-源码分析-Topology Submit-Task-TopologyContext (backtype.storm.task)
1. GeneralTopologyContext 记录了Topology的基本信息, 包含StormTopology, StormConf 已经从他们推导出的, task和component, co ...
- Storm-源码分析- timer (backtype.storm.timer)
mk-timer timer是基于PriorityQueue实现的(和PriorityBlockingQueue区别, 在于没有阻塞机制, 不是线程安全的), 优先级队列是堆数据结构的典型应用 默认情 ...
- django中同源策略和跨域解决方案
一 同源策略 1.1何谓同源? 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同 ...
- foo ?
我们经常看到一些基础教程,面试题中经经常使用foo来命名,甚至有时候我们也会用过,可是你是否又知道foo是什么意思?(实际上,知道不知道又不会对你编码有不论什么影响~) 从编程黑马的王轶男的话来解释, ...
- 009-mac下记事本工具 sublime text3
1.subline text3 下载:https://download.sublimetext.com/Sublime%20Text%20Build%203143.dmg 序列号:[来源与互联网,如有 ...
- Linux PHP7的openssl扩展安装
Linux环境下使用PHPmailer发送邮件时,出现如下错误: SMTP -> ERROR: Failed to connect to server: Unable to find the s ...
- HTTP中的header头解析说明
HTTP的头信息比较多,这里根据实际例子作出说明.下面图片是访问 http://kccdzz.com 的一个HTTP请求的header信息,可以看出Headers主要分为Response Header ...