DICOM:开源DICOM书籍之“git版本库合并”

背景:

之前翻译的DICOM3.0标准是在本地创建的git仓库,并非在github上创建,此时别人是无法访问的,当初的目的是想待标准翻译初步完成后再提交到github上。

然而由于本地的翻译工作采用MarkDownPad进行编辑,文档中的图片需要有一个公网URL才能在文档中显示(注:马克飞象工具是可以直接将剪切板中的图像插入到MarkDown文档致中的,目前马克飞象已经出了Windows和IOS的客户端,下载),因此就在Github上创建了DICOM-Chinese的仓库,并在其中创建了Figure子文件夹用于存放文档中出现的所有图片。

合并git库:

既然如此为了省去两个git仓库之间编辑的繁琐,今日希望将本地.git仓库“Part 8:Network Communication Support for Message Exchange”合并到“DICOM-Chinese”中,并且希望保留“Part 8:Network Communication Support for Message Exchange”之前的所有提交记录。——就是此次博文要讲的主要内容,详情如下:

具体操作的指令如下:

为了下文描述方便,假设本地翻译文档.git仓库路径为:c:\Part8-NCSME,Github迁到本地的.git仓库路径为:c:\DICOM-Chinese

#``` bash
#跳转到DICOM-Chinse目录,即.git所在目录
cd c:\DICOM-Chinese
#添加Part8-NCSME到DICOM-Chinese
git remote add other ../Part8-NCSME
#从Part8-NCSME仓库抓取数据到DICOM-Chinse本地库
git fetch other
#从Part8-NCSME仓库抓取master分支到本地DICOM-Chinese,命名为part8
git checkout -b part8 other/master
#切换回DICOM-Chinese的master分支
git checkout master
#合并part8分支到DICOM-Chinese本地master
git merge part8
#```

知识点补充:

git中的working tree与index

git index有时候也称之为staging area或cache;git working tree也为称为working directory

从下图可以看出working tree就是working directory,即文件系统中的.git的父目录,该目录中是我们具体操作的所有文件,类似于SVN中的本地工作副本。示例如下图所示:

git不同于svn采用中央仓库管理模式,而是采用分布式管理,即每一个本地副本都是一个git全仓库。因此在本地的git版本库有三个状态:

1. workspace 或称为working tree 亦可称作working directory

2. index或称为staging area

3. local repository 或称为git directory

workspace就是本地文件系统中存储的具体操作的文件以及文件夹;index就是修改缓冲区;local repository就是版本库,与之前svn服务端的版本库一个含义,就是版本管理系统用户进行修改记录的数据库。

git中的checkout

由于git采用分布式管理,本地同时包含上述workspace、index、local repository三个部分。因此git中的checkout指令比svn中的checkout功能复杂。svn的checkout就是从服务器端下载仓库副本到本地指定目录,由于git本地目录包含仓库文件,以及本地缓冲,因此checkout提供分别从不同地方重新检出代码的功能,如下图所示:

checkout 不指定版本或仓库(即分支)的情况下默认从index本地缓冲区检出代码;如果指定版本或仓库(即分支)时,git会从local respository检出代码。本地具体测试情况如下:

参考资料:

  1. 合并两个git仓库
  2. git的checkout

    作者:zssure

    时间:2015-08-29

版权声明:本文为zssure原创文章,转载请注明出处,未经允许不得转载。

时间: 2024-10-14 13:12:20

DICOM:开源DICOM书籍之“git版本库合并”的相关文章

萌新笔记——git的问题(error: object file .git/objects/* is empty...)的解决方案及对git版本库文件的了解

由于操作不当,导致git版本库出了大问题,如下所示: error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e is empty fatal: loose object 8b61d0135d3195966b443f6c73fb68466264c68e (stored in .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e) is corrupt 即

解决git提交敏感信息(回退git版本库到某一个commit)

解决git提交敏感信息(回退git版本库到某一个commit) Fri 07 June 2013 git是一个很好的版本库, 现在很多人用它, 并在github上创建项目, 相信大家都有过将敏感信息提交版本的经历, 如何删除? 好像只有删除版本库来解决, 其实我们可以通过回退版本库删除相应的commit来将提交的敏感信息去掉. 备份本地代码 首先我们将本地代码的更改备份一下, 以防丢失更改 回退本地代码的commit 备份完数据, 我们就可以先回退本地的版本库 git reset --hard

GIT版本库回滚【图文版】

金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉.版本管理要贯彻到日常的开发学习中去.SVN转GIT用户.金天微信:15998603918 欢迎找我聊聊天. git 版本库回滚,在实际开发过程中总会遇得到 1. 先找出需要回滚的commitid git log -3 2. 重置本地版本库到指定commitid, 注意:本地改动将丢失 git reset --hard b034c3fe4e5823f71990e153d8a52b9ac871b5b7 3.

redmine整合GIT版本库

redmine整合GIT版本库 服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite 前言:由于redmine的版本比较低,所以新版本的配置方法有可能有差异.请实践者留意. redmine和git的安装过程掠过. 由于redmine中GIT插件自身对文件读写权限的限制,所以一般有2种处理方式: 1)修改已经存在的GIT版本的文件读写权限:改为redmine运行用户可以访问: 2)将GI

git版本库服务器搭建

1.linux服务器端操作 1.1linu机器git-server上创建版本库 [[email protected] ~]$ mkdir www.tomcatfox.com.git [[email protected] ~]$ ls www.tomcatfox.com.git [[email protected] ~]$ git init --bare www.tomcatfox.com.git/ [[email protected] ~]$ cd www.tomcatfox.com.git/

Git版本库的创建(Ubuntu)

在Ubuntu上学习Git随笔. 一. git 仓库的安装 git 在终端用git命令查看Ubuntu是否安装git版本库,如果没有安装,最新版本(Ubuntu18.04)会提示用下面命令进行安装. sudo apt install git 如果老版本用下面几个命令试一下 sudo apt-get install git sudo apt-get install git-core 二.创建一个 git 版本库: 1.选择一个要创建这个文件的位置,例如在  我的 /home/cyp 下创建 ler

git版本库

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库. Git的功能特性: 从一般开发者的角度来看,git有以下功能: 1.从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上. 2.在自己的机器上根据不同的开发目的,创建分支,修改代码. 3.在单机上自己创建的分支上提交代码. 4.在单机上合并分支. 5.把服务器上最新版的代码fetch下来,然后跟自己的主分支合并. 6.生成补丁(patch),把补丁发送给

Git学习笔记2——Git版本库的创建

创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ cd s: $ cd Git_Learing $ pwd s/Git_Learning pwd命令用于显示当前目录.在我的windows上,这个仓库位于s/Git_Learning. 在Windows系统中,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文. 第二步,通过git init命令把这个目录变成Git可以管理的仓库: $ git init Initialized empty Git reposi

Git版本库工作流程图想

对照廖雪峰的教程,发现有很多难以理解的地方,画了一个图想方便以后参考 首先两个基本命令反应了版本库最本质的工作流程,后面的命令其实都基于此git add 把文件修改添加到暂存区git commit 在原版本的基础上增加一个暂存区的文件修改成为新版本 git add . 以../.git根目录工作区为范围的所有文件修改添加到暂存区 git add 1.txt 把1.txt的文件修改添加到暂存区 再次git add . 所有的版本控制系统,其实只能跟踪文本文件的改动.如果要真正使用版本控制系统,就要