zoukankan      html  css  js  c++  java
  • 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

    欢迎补充

  • E-Mail : Mike_Zhang@live.com
  • 转载请注明出处,谢谢!
查看全文
  • 相关阅读:
    dotnet 新项目格式与对应框架预定义的宏
    dotnet 线程静态字段
    dotnet 线程静态字段
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取系统信息
    dotnet 通过 WMI 获取系统信息
    PHP show_source() 函数
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/gitReposMerge_20130517.html
  • Copyright © 2011-2022 走看看