commit同步到其他仓库

2022-09-26 10:28:41 浏览数 (1)

commit同步到其他仓库

作者:matrix 被围观: 2,260 次 发布时间:2021-07-31 分类:零零星星 | 一条评论 »

这是一个创建于 396 天前的主题,其中的信息可能已经有所发展或是发生改变。

不同的仓库可以互相同步其中任意提交的commit吗?可以的~

现有仓库enc,qsui,dada。三个的代码基本相同但是没有新建分支来区别。

本地会经常修改enc代码来提交到其远程仓库,但是其他仓库咋办?我不想每个再修改提交。

办法

大致思路就是本地仓库添加其他remote远程分支,本地抓取之后新建本地分支进行关联,再git cherry-pick合并提交到本地新的分支,之后push即可。

步骤

  • 1.enc本地添加远程
代码语言:javascript复制
$ git remote add dada  https://git.weixin.qq.com/wx_wx8fffaa009d109aa1/dada.git

$ git remote  -v # 查看远程仓库分支
  • 2.抓取到本地
代码语言:javascript复制
$ git fetch dada
  • 3.新建本地分支
代码语言:javascript复制
$ git checkout -b dada dada/master #远程dada/master分支新建为本地分支「dada」,且当前分支切换到dada

$ git branch -a # 查看本地分支情况
    * dada
      master
      remotes/dada/master
      remotes/origin/master
  • 4.将commit提交合并到新分支
代码语言:javascript复制
$ git cherry-pick d4df33b962910XXXX
  • 5.push推送
代码语言:javascript复制
$ git push dada dada:master

一句话同步操作

代码语言:javascript复制
$ git checkout qsui  &&  git cherry-pick dad6432037fcadcd35405aaa331dd367e58b1e2e   &&  git push qsui qsui:master 

多分支多commit操作脚本

代码语言:javascript复制
#!/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

0 人点赞