commit同步到其他仓库

作者:matrix 发布时间:2021年7月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