git仓库合并(向原有git仓库中加入新仓库)

我经常写随笔,有版本控制的参与会很方便,可有时候由于种种原因(比如网络不通等),我不能clone到本地,而我又要写新的随笔,写的过程中会有很多递交历史,我在合并到随笔文件夹的时候,也想得到递交历史。

现在模拟下这一场景:

1、建立文件夹essays,并添加随笔essay1.md;
2、建立tmp文件夹,添加新随笔essays2.md,添加内容,并完成多次递交;

现在的问题是,我不只是想要tmp文件夹下东西,它的递交历史我也想要;

步骤如下:

1、进入essays文件夹,添加远程分支并:
git remote add tmp ../tmp/
2、抓取远程分支数据到本地仓库:
git fetch tmp
3、产生临时新分支:
git checkout -b tmp tmp/master
4、切回master分支:
git checkout master
5、将临时新分支合并到master分支:
git merge tmp 
6、删除临时分支:
git branch -d tmp

合并后效果如下:

为了方便使用,我这里整理了下,写成python脚本,代码如下(gitReposMerge.py):

#! /usr/bin/python

import os

dir1 = "essays"
dir2 = "../tmp"
tmpBranchName = "tmp"

execCommand = os.system

strCmd1 = "cd %s && git remote add %s %s && git fetch %s  \
&& git checkout -b  %s %s/master && git checkout master  \
&& git merge %s && git branch -d %s && cd .." % (dir1,tmpBranchName,dir2, \
tmpBranchName,tmpBranchName,tmpBranchName,tmpBranchName,tmpBranchName,)
print strCmd1
execCommand(strCmd1)

 

代码使用基于以下目录结构:

即:脚本和git仓库在同一个目录。

执行gitReposMerge.py脚本即可。

本示例的gist链接:https://gist.github.com/mike-zhang/5597980

本文github地址:

https://github.com/mike-zhang/mikeBlogEssays/blob/master/2013/20130517_向原有git仓库中加入新仓库.md

欢迎补充

posted on 2013-05-17 21:51  Mike_Zhang  阅读(2186)  评论(0编辑  收藏  举报