《Git学习指南》——1.3 分支的创建与合并很简单

1.3 分支的创建与合并很简单

对于大多数版本控制系统来说,分支的创建与合并通常会因其特殊性而被认为是高级拓展操作。但由于Git最初就是为了方便那些散落在世界各地的Linux内核开发者而创建的,合并多方努力的结果一直都是其面临的最大挑战之一,所以Git的设计目标之一就是要让分支的创建与合并操作变得尽可能地简单且安全。

在下面的图1.4中,我们向你展示了开发者是如何通过创建分支的方式来进行并行开发的。图中的每一个点都代表了该项目的一个版本(即commit)。而由于在Git中,我们只能对整个项目进行版本化,所以每个点同时也代表了属于同一版本的各个文件。

图1.4 因开发者的并行开发而出现的分支创建操作

如上所示,图中两位开发者的起点是同一个版本。之后两人各自做了修改,并提交了修改。这时候,对于这两位开发者各自的版本库来说,该项目已经有了两个不同的版本。也就是说,他们在这里创建了两个分支。接下来,如果其中一个开发者想要导入另一个人的修改,他/她就可以用Git来进行版本合并。如果合并成功了,Git就会创建一个合并提交,其中会包含两位开发者所做的修改。这时如果另一位开发者也取回了这一提交,两位开发者的项目就又回到了同一个版本。

在上面的例子中,分支的创建是非计划性的,其原因仅仅是两个开发者在并行开发同一个软件罢了。在Git中,我们当然也可以开启有针对性的分支,即显式地创建一个分支(见图1.5)。显式分支通常主要用于协调某一种功能性的并行开发。

图1.5 针对不同任务的显式分支

版本库在执行拉回和推送操作时,可以具体指定其针对的是哪一些分支。当然,除了这些简单的分支创建和合并处理外,我们也可以对分支执行以下动作。

移植分支:我们可以直接将某一分支中的提交转移到另一个版本库中。
只传送特定修改:我们可以将某一分支中的某一次或某几次提交直接复制到另一个分支中。这就是所谓的捡取处理。
清理历史:我们可以对分支历史进行改造、排序和删除。这有利于为该项目建立更好的历史文档。我们称这种处理为交互式重订(interactive rebasing)。

时间: 2024-08-02 03:19:40

《Git学习指南》——1.3 分支的创建与合并很简单的相关文章

《Git学习指南》——导读

** 前言 **Git的背后有着一个非常精彩的成功故事.2005年4月,Linus Torvalds因不满当时任何一个可用的开源版本控制系统,就亲自着手实现了Git.时至今日,如果我们在Google中搜索"git version control"这几个关键词,都会看到数以百万计的返回结果.Git已经俨然成为了新型开源项目的一个标准.许多大型的开源项目都已经或正在计划迁移到Git上来. 下面,我们来看一下这么多人之所以会选择Git的原因. Git允许我们利用分支来开展工作:在一个由多个开

创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]

在<基于T4的代码生成方式>中,我对T4模板的组成结构.语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码.为了让由此需求的读者对T4有更深的了解,我们通过T4来做一些更加实际的事情--SQL Generator.在这里,我们可以通过SQL Generator为某个数据表自动生成进行插入.修改和删除的存储过程.[文中源代码从这里下载] 一.代码生成器的最终使用效果 我们首先来看看通过直接适用我们基于T4的SQL生成模板达到的效果.右图(点击

一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]

在<上篇>中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加.修改和删除操作的存储过程.但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板.如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利.借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单. 一.多文件代码生成器会带来多大的便利? 我们先来直观的感受一下较之<上篇>提供的单一文件的代码生成器,基于多文件的代码生成解决方案会

git 分支的创建、合并、删除

 基本概念与命令 分支(branch):每次提交,Git都把提交的内容串成一条时间线,这条时间线就是一个分支 .   git 分支的创建 git branch branchName git 分支的切换 git checkout  branchName git 分支的创建和切换:git checkout -b branchName gt 分支的合并 git merge git分支的删除  git branch -d branchName git分支的查看  git branch      具体步骤

《Git学习指南》——2.3 Git的协作功能

2.3 Git的协作功能 现在,我们已经有了一个存放项目文件的工作区,以及一个存放项目历史的版本库.在一个像CVS和Subversion这样传统的集中式版本系统中,尽管每个开发者也都有属于他/她自己的工作区,但所有人都共享了一个通用的版本库.而在Git中,每个开发者拥有的是一个属于他/她自己的.自带独立版本库的工作区,因此这已经是一个不依赖于中央服务器的.完整的版本控制系统了.开发者们可以通过交换各自版本库中的提交来实现项目合作.下面我们就来做个试验,先创建一个新的工作区,以便我们模拟第二位开发

《Git学习指南》——1.4 本章小结

1.4 本章小结 在阅读完本章之后,我们希望你现在基本上熟悉了Git中的这些基本概念.也就是说,即使你现在放下了这本书(当然,希望不会!),你也可以参加与分布式版本控制系统有关的讨论,阐述其中使用散列值的必要性和实用性,介绍Git中的分支创建与合并操作了. 当然,你可能还会有以下疑问. 我们应该如何利用这些基本概念来管理项目呢?我们应该如何协调多个版本库呢?我们究竟需要多少分支呢?我们应该如何整合自己的构建服务器呢?对于第一个问题,你可以继续阅读下一章内容.在下一章中,你将会看到那些具体用于创建

《Git学习指南》——第1章 基本概念 1.1分布式版本控制,有何过人之处

第1章 基本概念 在本章中,我们将介绍一个分布式版本控制系统的设计思路,以及它与集中式版本控制系统的不同之处.除此之外,我们还将带你了解分布式版本库的具体工作方式,以及为什么我们会说,在Git中创建分支和合并分支不是个大不了的问题. 1.1 分布式版本控制,有何过人之处 在具体探讨分布式版本控制的概念之前,让我们先来快速回顾一下传统的集中式版本控制架构. 图1.1中所显示的就是一个集中式版本控制系统(例如CVS或Subversion)的典型布局.每个开发者都在他或她自己的计算机上有一个包含所有项

《Git学习指南》——1.2 版本库,分布式工作的基础所在

1.2 版本库,分布式工作的基础所在 其实,版本库本质上就是一个高效的数据存储结构而已,由以下部分组成. 文件(即blob):这里既包含了文本也包含了二进制数据,这些数据将不以文件名的形式被保存.目录(即Tree):目录中保存的是与文件名相关联的内容,其中也会包含其他目录.版本(即commit):每一个版本所定义的都是相应目录的某个可恢复的状态.每当我们创建一个新的版本时,其作者.时间.注释以及其之前的版本都将会被保存下来.对于所有的数据,它们都会被计算成一个十六进制散列值(例如像1632acb

《Git学习指南》——第2章 入门 2.1准备Git环境

第2章 入门 第1章 Spring如果你想试着用一下Git的话,那么我们马上就可以开始了.本章将会带领你创建自己的第一个项目.我们会为你演示那些用于提交修改版本.查看历史和与其他开发者交换版本的命令. 2.1 准备Git环境 首先,我们需要安装好Git.你可以在Git的官网上找到你所需要的一切: http://git-scm.com/downloadGit是一个高可配置软件.首先,我们可以宣布用config命令配置一下用户名和用户邮箱:[1] > git config --global user