新建一个 autoMerge.sh 的文件,文件内容如下
# 提示用户确认继续执行
read -p "确认要执行脚本吗?(输入 'yes' 继续): " userInput# 检查用户输入是否为 "yes"
if [ "$userInput" != "yes" ]; thenecho "用户取消了操作,脚本已终止。"exit 1
fi#进入到代码根目录位置
cd product-demo#切换到dev分支
git checkout dev#拉取最新代码
git pull#切换到uat分支
git checkout uat#从dev分支合并代码到uat
git merge --no-edit dev#检查是否存在合并冲突
if [[ -n $(git ls-files --unmerged) ]]; then# 解决合并冲突,选择当前分支的版本git checkout --ours .# 提交解决冲突后的代码git add .git commit -m "Resolved merge conflict by choosing current branch's code"
fi#将最新代码提交到uat分支
git push origin uat#结束后回到dev分支
git checkout dev
命令解释
- read -p "确认要执行脚本吗?(输入 'yes' 继续): " userInput
 提示用户输入,要求用户确认是否继续执行脚本。只有用户输入’yes’时,脚本才会继续执行。
- if [ "$userInput" != "yes" ]; then
 如果用户输入不是’yes’,执行下面的命令。
- echo "用户取消了操作,脚本已终止。"
 输出用户取消操作的信息。
- exit 1
 终止脚本执行,并返回退出码1。
- cd suitecrm-fe
 改变当前工作目录到- suitecrm-fe。
- git checkout dev
 切换到名为"dev"的分支。
- git pull
 从远程仓库拉取"dev"分支的最新代码。
- git checkout uat
 切换到名为"uat"的分支。
- git merge --no-edit dev
 从"dev"分支合并更改到当前的"uat"分支,不提供编辑合并提交信息的机会。
- if [[ -n $(git ls-files --unmerged) ]]; then
 检查是否存在未合并的文件。如果有,说明有合并冲突。
- git checkout --ours .
 选择当前分支的版本来解决合并冲突。
- git add .
 将所有文件添加到暂存区。
- git commit -m "Resolved merge conflict by choosing current branch's code"
 提交暂存区中的更改,并附加指定的提交信息。
- git push origin uat
 将"uat"分支的最新更改推送到远程仓库的"uat"分支。
- git checkout dev
 完成所有操作后,切换回"dev"分支。