commit同步到其他仓库
作者:matrix 发布时间:2021-07-31 分类:零零星星
不同的仓库可以互相同步其中任意提交的commit吗?可以的~
现有仓库enc,qsui,dada。三个的代码基本相同但是没有新建分支来区别。
本地会经常修改enc代码来提交到其远程仓库,但是其他仓库咋办?我不想每个再修改提交。
办法
大致思路就是本地仓库添加其他remote远程分支,本地抓取之后新建本地分支进行关联,再git cherry-pick
合并提交到本地新的分支,之后push即可。
步骤
- 1.enc本地添加远程
$ git remote add dada https://git.weixin.qq.com/wx_wx8fffaa009d109aa1/dada.git
$ git remote -v # 查看远程仓库分支
- 2.抓取到本地
$ git fetch dada
- 3.新建本地分支
$ git checkout -b dada dada/master #远程dada/master分支新建为本地分支「dada」,且当前分支切换到dada
$ git branch -a # 查看本地分支情况
* dada
master
remotes/dada/master
remotes/origin/master
- 4.将commit提交合并到新分支
$ git cherry-pick d4df33b962910XXXX
- 5.push推送
$ git push dada dada:master
一句话同步操作
$ git checkout qsui && git cherry-pick dad6432037fcadcd35405aaa331dd367e58b1e2e && git push qsui qsui:master
多分支多commit操作脚本
#!/bin/bash
#example: shell.sh dada,qsui commitID1,commitID2
# 同步commit到其他远程仓库
if [ ! $1 -o ! $2 ]; then
echo -e "usage example: \n $ shell.sh dada,qsui commitID1,commitID2"
exit
fi
repo_arr=(`echo $1 | tr ',' ' '`)
commit_arr=(`echo $2 | tr ',' ' '`)
for repo in ${repo_arr[@]};do
for commit_id in ${commit_arr[@]};do
git checkout $repo
git pull
git cherry-pick $commit_id
git push $repo $repo:master
echo -e "\n"
done
done
git checkout master
参考:
https://www.bestyii.com/topic/40
https://blog.zengrong.net/post/bash_array/
https://blog.csdn.net/Jerry_1126/article/details/83930956