首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git的艺术—分支管理

Torvalds,22岁就创建了Linux系统,发展到2005年的时候,用了仅两周的时间写了一个分布式版本控制系统,也就是Git!...SVN 是把内容按文件方式存储,而 Git 是按元数据方式存储。 3. Git 分支和 SVN 的分支不同:分支在 SVN 中一点不特别,就是版本库中的另外的一个目录。 4....SVN 有全局的版本号,这样子你就可以根据版本号知道每次提交的先后顺序了,但 Git 没有。 5. Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。...1.jpeg 而当你新建另一条分支时,Git 为你创建了一个可以移动的新的指针。比如,创建一个 featureA 分支。如图一,master 分支上已有多个提交记录,最新一次提交为 M2 。...Git 的分支管理在多人共同开发一个项目上的优势尤其明显,如果大家都在主干上开发,那代码将变得不堪入目。

1.4K100

SVN与Gi的较量对比

这样就开发者就可以回归到任何一个时间点的某一个旧的版本(对于SVN,没修改一次文件,SVN就会创建一个叫做版本的概念,是从0 开始自增的序列)。...SVN与GIT的区别: 1.GIT是分布式的,而SVN是集中式的 2.GIT把内容按元数据方式存储,而SVN是按文件:因为git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签...4.GIT没有一个全局的版本号,而SVN有 5.GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。...这个其实是由于本地库的存在而产生的,但可以减少中央库上的冗余版本 分支策略:在Git实际开发中分支的分离和merge是属于日常操作,开启和合并分支成本相比SVN要小得多:SVN是复制一份代码到分支目录,...这便是弱化了分支的概念,由于分支成本很小,因此使得按功能分支的开发模式(每个分支一个功能,开发完了再merge到主干)变得非常简单,大家可以完全不需要再因为担心SCM成本太高而选用主干开发模式(所有功能都在主干上开发

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    10分钟带你入门git到github

    不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。...' 基于master分支创建了feature_a分支并且切换到了feature_a分支。...多数公司模式应该下面这样的流程吧。1.先基于主干分支 拉出一个功能分支(feature_xx)进行开发。2.开发完成后测试基于这个功能分支进行测试。3.测试完成后,开发把功能分支合并到主干分支。...合并代码操作如下: 先切换到主干分支(release),主干分支git pull 拉下远程分支最新代码(可能有同事提交了新的代码) 切回到功能分支 把本地主干最新代码合(git merge)并到当前功能分支...切换到主干分支执行git merge 功能分支。(这一步实际工作中一般人是不能这么操作的),代码必须要先发起一个merge request 经过代码review才能进行合并到主干分支的。

    38310

    再见了,SVN!GitHub 宣布将淘汰 Subversion 支持

    而且,根据 GitHub 的说法,每个月只有 5000 个存储库收到 SVN 请求,其中仅 0.02%的请求通过 Subversion 端点发送。...与 Git 使用的分布式模型相比,SVN 的客户端 - 服务器模型显得比较老派,变更会先被存储在本地,并在推送到上游代码仓库时被分发至中央历史记录(及其他分支)。...当时,软件会被构建成集中代码仓库,所添加的全部功能都被合并至单一主干当中。分支本身很少见,即使有最终也会被吸纳进主干内。...首先,它采用集中式设计,就是说 SVN 服务器必须处于运行状态才能接收开发者提交的变更。一旦互联网发生故障,麻烦就大了。第二点,分支是种负担。一旦创建了分支,就没法将其删除(如果我没记错的话)。...虽然有一条命令可以删掉分支,但它仍然会被保留在历史记录中。Git 分支就更轻松易用,能在必要时直接删除。” 很明显,随着新一代版本控制系统的诞生,SVN 失去了其优势地位。

    78210

    Git 常用命令详解(二)

    branch 查看远程分支:$ git branch -r 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支 切换分支:$ git checkout...,Git采用这种树形结构来存储版本信息,那么HEAD就表示根;refs目录存储了你在当前版本控制目录下的各种不同引用(引用指的是你本地和远程所用到的各个树分支的信息),它有heads、remotes、stash...、tags四个子目录,分别存储对不同的根、远程版本库、Git栈和标签的四种引用,你可以通过命令'git show-ref'更清晰地查看引用信息;logs目录根据不同的引用存储了日志信息。...下面两幅图可以形象的展示Git与SVN的不同之处: ------------ 1)本地增加分支 图中Git本地和服务器端结构都很灵活,所有版本都存储在一个目录中,你只需要进行分支的切换即可达到在某个分支工作的效果...2)分布式提交 Git 可以本地提交代码,所以在上面的图中,Git有利于将一个大任务分解,进行本地的多次提交 而SVN只能在本地进行大量的一次性更改,导致将来合并到主干上造成巨大的风险 3)日志查看 Git

    57340

    10分钟带你入门git到github

    不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。...' 基于master分支创建了feature_a分支并且切换到了feature_a分支。...合并代码操作如下: 先切换到主干分支(release),主干分支git pull 拉下远程分支最新代码(可能有同事提交了新的代码) 切回到功能分支 把本地主干最新代码合(git merge)并到当前功能分支...切换到主干分支执行git merge 功能分支。(这一步实际工作中一般人是不能这么操作的),代码必须要先发起一个merge request 经过代码review才能进行合并到主干分支的。...合并完主干分支后,功能分支就可以删除了。 总结 以上命令基本上可以应付工作中大多数场景了,不过git还有很多高级的玩法。

    1K00

    Git常用命令使用大全

    git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用'git init'命令进行初始化;Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上...:$ git branch -r 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支 切换分支:$ git checkout [name] 创建新分支并立即切换到新分支...(引用指的是你本地和远程所用到的各个树分支的信息),它有heads、remotes、stash、tags四个子目录,分别存储对不同的根、远程版本库、Git栈和标签的四种引用,你可以通过命令'git show-ref...1)本地增加分支 图中Git本地和服务器端结构都很灵活,所有版本都存储在一个目录中,你只需要进行分支的切换即可达到在某个分支工作的效果 而SVN则完全不同,如果你需要在本地试验一些自己的代码,只能本地维护多个不同的拷贝...2)分布式提交 Git 可以本地提交代码,所以在上面的图中,Git有利于将一个大任务分解,进行本地的多次提交 而SVN只能在本地进行大量的一次性更改,导致将来合并到主干上造成巨大的风险 3)日志查看

    65210

    【SVN】教你如何替换主干代码

    :svn的主干上面有一份代码,svn的分支上面也有一份代码,这两份代码是完全不一样的,所以不能仅仅用分支替换主干就可以了,替换也会出错的。...项目的第一个版本开发完之后,我们接着对这个项目进行架构升级,所以之前的项目就不能用了,我们就在分支上面新建了一个新的项目,项目的架构搭建完之后,就需要将新架构的代码放到主干上面,原先主干上面的代码要标记版本放到...合并成功后需要将主干(trunk)上合并过的文件提交到svn代码库,如图 - 图中各项的含义: -ignore ancestry : 忽略根源 -ignore line endings : 忽略行结尾...第五个步骤:确定合并后的代码,将主干(trunk)上合并过的文件提交commit到svn代码库 总结: 顺利的情况下过程大概就是这样,但是实际过程中肯定会出现很多问题,比如冲突、更新不了、合并不了等等的问题...有些人可能会问,未什么我在刚升级架构的时候不马上放到主干上面去呢,这是因为线上运行的版本是旧架构的项目,未了防止意外的bug出现,必须将项目留在主干上面,进行bug的快速修复。

    1.2K30

    告别SVN,Git成“独苗”:GitHub 在 13 年后宣布淘汰Subversion支持

    而且,根据 GitHub 的说法,每个月只有 5000 个存储库收到 SVN 请求,其中仅 0.02%的请求通过 Subversion 端点发送。...与 Git 使用的分布式模型相比,SVN 的客户端 - 服务器模型显得比较老派,变更会先被存储在本地,并在推送到上游代码仓库时被分发至中央历史记录(及其他分支)。...当时,软件会被构建成集中代码仓库,所添加的全部功能都被合并至单一主干当中。分支本身很少见,即使有最终也会被吸纳进主干内。...首先,它采用集中式设计,就是说 SVN 服务器必须处于运行状态才能接收开发者提交的变更。一旦互联网发生故障,麻烦就大了。第二点,分支是种负担。一旦创建了分支,就没法将其删除(如果我没记错的话)。...虽然有一条命令可以删掉分支,但它仍然会被保留在历史记录中。Git 分支就更轻松易用,能在必要时直接删除。” 很明显,随着新一代版本控制系统的诞生,SVN 失去了其优势地位。

    49420

    Git 中文参考(六)

    该分支将指向新创建的分支的父提交。如果在 SVN 中分支被删除并且稍后从不同版本重新创建,则将存在多个具有 @ 的分支。 请注意,这可能意味着为单个 SVN 修订创建了多个 Git 提交。...虽然这是获取完整存储库副本的最简单方法,但对于具有多个分支的项目,它将导致工作副本比主干大许多倍。因此,对于使用标准目录结构(主干/分支/标签)的项目,建议使用选项--stdlayout进行克隆。...如果项目使用非标准结构,和/或不需要分支和标记,则最简单的方法是仅克隆一个目录(通常是主干),而不提供任何存储库布局选项。...现有存储库(包括 Linux 内核,Git 本身和稀疏存储库)具有触发此检查的旧对象,但建议使用此标志检查新项目。 --verbose 说实话。...您可以将库子目录转换为自己的存储库。

    28910

    git入门篇(1)--初识Gi

    如果不使用分布式版本控制工具我们只能创建一个文件夹,然后每次修改不断地另存为新的文件,然后来存储我们不同版本的论文。...Git如何让做好备份工作 我们刚才一直在说Git在本地创建版本库,那版本库存储在本地磁盘,本地磁盘出问题我的所有版本库不就直接全部丢失了。...Git的优势 Git 和 Svn 的分支实现机制完全的不同,这也直接导致了 SVN 在分支合并中困难重重。...当我们使用SVN中在一个分支上工作数周或几个月之后,主干的修改也同时在进行着,两条线的开发会区别巨大,当你想合并分支回主干,可能因为太多冲突,已经无法轻易合并你的分支和主干的修改。...而在 git 版本库中创建分支的成本几乎为零,所以可以创建一个属于自己的个人工作分支,以避免对主分支 master 造成太多的干扰,也方便与他人交流协作。

    52020

    day10 | Git的正确使用姿势与最佳实践 | 第三届字节跳动青训营笔记

    工作上用的比较多的就是Git了,像Git衍生出的Github,Gitee,Gitlab等等,当然也有其他的公司用Svn。...分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体 分支管理功能强大,方便团队合作,多人协同开发 校验和机制保证完整性,-般只添加数据,很少执行删除操作,不容易导致代码丢失 缺点: 相对SVN...基本原理 依托于Change ID概念,每个提交生成一个单独的代码评审。 提交上去的代码不会存储在真正的refs/heads/下的分支中,而是存在一个refs/for/ 的引用下。...3.3 分支管理工作流 分支管理工作流 特点 Git Flow 分支类型丰富,规范严格 Github Flow 只有主干分支和开发分支,规则简单 Gitlab Flow 在主干分支和开发分支之上构建环境分支...3.3.2 分支管理工作流Github Flow Github的工作流,只有一个主干分支,基于Pull Request往主干分支中提交代码。

    1.1K30

    白话解说半分钟就懂——Git VS SVN

    Git clone和download zip是有区别的: Git clone下载压缩文件:内含.git 及历史版本 download zip下载压缩文件:下载版本 Git VS SVN svn的优势...git的优势: 去中心化:Git是没有中心服务器的,每个人机器上都是一个完整的库,我们平时开发代码时的中央服务器其实和我们自己机器上的库内容是完全一样的(格式有点不同,是bare的)。...这个其实是由于本地库的存在而产生的,但可以减少中央库上的冗余版本 **分支策略:**在Git实际开发中分支的分离和merge是属于日常操作,开启和合并分支成本相比SVN要小得多:SVN是复制一份代码到分支目录...这便是弱化了分支的概念,由于分支成本很小,因此使得按功能分支的开发模式(每个分支一个功能,开发完了再merge到主干)变得非常简单,大家可以完全不需要再因为担心SCM成本太高而选用主干开发模式(所有功能都在主干上开发...两者的工作流对比: svn模式 写代码。 从服务器拉回服务器的当前版本库,并解决服务器版本库与本地代码的冲突。 将本地代码提交到服务器。 git模式 写代码。 提交到本地版本库。

    71950

    大型项目的 Gitflow 实践

    使用svn遇到的问题 1、打分支极其麻烦:每次主干发布后都要打出6个分支,旧的分支废弃,源码大小10G左右(纯源码,不包含文档,jar包等),svn打分支的方法就是copy一份,所有开发人员至少1天来重新搭建环境...从2016年9月开始,到2017年4月基本顺畅,从svn到git,从地域划分到业务划分,从主干分支到gitflow…… 二、svn迁移git 目标:迁移后的日志保留(日志),不能影响现有工作(稳定),大家容易接受...最终迁移过程如下: 1、配置管理员将svn代码迁移到git上,并按照目前svn模型,在git上打好分支,从v3.6版本建立各个分支,主干命名master,各分支为branchA,branchB,branchC...2、在主干发布v3.6.1,并且在svn上合并完代码后,配置管理员会将此时主干代码完全迁移到git上(一晚上完成)。主干人员使用git工具下载源码并搭建环境,从此开始在git上开发。...3、各个分支团队继续在svn上开发,发布完当前版本后,开发人员将代码完全提交到git的分支上,然后使用git工具进行合并,合并后参与主干开发,至此全部开发人员在git上开发。

    44340

    大型项目的 Gitflow 实践

    使用svn遇到的问题 1、打分支极其麻烦:每次主干发布后都要打出6个分支,旧的分支废弃,源码大小10G左右(纯源码,不包含文档,jar包等),svn打分支的方法就是copy一份,所有开发人员至少1天来重新搭建环境...从2016年9月开始,到2017年4月基本顺畅,从svn到git,从地域划分到业务划分,从主干分支到gitflow…… 二、svn迁移git 目标:迁移后的日志保留(日志),不能影响现有工作(稳定),大家容易接受...最终迁移过程如下: 1、配置管理员将svn代码迁移到git上,并按照目前svn模型,在git上打好分支,从v3.6版本建立各个分支,主干命名master,各分支为branchA,branchB,branchC...2、在主干发布v3.6.1,并且在svn上合并完代码后,配置管理员会将此时主干代码完全迁移到git上(一晚上完成)。主干人员使用git工具下载源码并搭建环境,从此开始在git上开发。...3、各个分支团队继续在svn上开发,发布完当前版本后,开发人员将代码完全提交到git的分支上,然后使用git工具进行合并,合并后参与主干开发,至此全部开发人员在git上开发。

    93450

    一篇就能学会使用 Subversion

    分支与合并:支持多分支开发,并能将分支代码合并回主干。为什么要用 Subversion?Subversion 适用于需要对文件变更进行精细管理的场景,尤其是软件开发和文档编辑。...它能够帮助团队提高效率、降低错误率,并提供透明的版本记录。Subversion 的优点简单易用:对于入门用户友好,基本操作直观明了。集中式管理:所有版本数据存储在一个中央服务器上,便于统一管理。...单点故障风险:中央服务器一旦崩溃,可能影响整个团队的工作。性能问题:相比于现代分布式版本控制系统(如 Git),在大规模项目中的性能略显不足。2....合并分支将分支内容合并到主干:svn merge svn://server_ip/repo/branches/branch_name3....Subversion 的最佳实践1. 管理项目将主干(trunk)用于稳定版本的开发。使用分支(branches)进行功能开发。使用标签(tags)保存重要版本。2.

    15010

    使用 Git Extensions 简单入门 Git

    Git 与 SVN 的最主要的区别就是,Git 的代码仓库是分布式的,一般流程就是在本地拉一个服务器上仓库的拷贝,修改代码后先提交到本地仓库,然后再合并到远程仓库;而 SVN 的代码仓库是集中式的,一般就服务器上的一个...Git 由于有本地仓库,工作目录一般就在本地仓库那里,从文件角度上看不出两个分支的文件分别在哪里,似乎工作目录下同时只存在一个分支。而 SVN 则能够清晰地看到哪些是主干的文件,哪些是分支的文件。...我刚开始得知 Git Extensions 时,它是作为一款 Visual Studio 插件映入我眼帘的,在 Visual Studio 的插件库中可以下载,但好像好久没更新了(版本为 2.47.03...MsysGit 为 Git 的 Windows 版本,必须要安装;Kdiff 为对比 / 合并工具,可选安装,可以换为使用其它的相关工具;最后一个 Windows Credential Store for...Git 用于在 Windows Credential Manager 中存储仓库的密码,这在老版本中没有,也安上吧。

    1.3K30

    鹅厂是如何使用 Git 的?

    转自腾讯技术工程 今天跟大家分享一点鹅厂程序员的 Git 使用经验。 介绍四种工作流来更好地理解 Git 的项目使用流程,利用其强大的分支功能为自己的项目构筑适配的工作流。 1....,下载一份仓库花了我 2-3 个小时,相比于 svn,git 有着非常多的优势,比如仓库 clone 速度非常快、核心的分支功能等等,后续公司也在推使用 git 来维护代码仓库,完全摒弃笨重的 svn。...功能分支工作流 功能分支工作流,这种工作方式是以集中式工作流为基础,再为不同功能开发分配单独的功能分支来进行的;这种工作流的主干分支仍然是 master 分支,但是开发者在进行日常需求开发时不能将代码直接提交到...,gitflow 工作流常驻的分支有两个:主干分支 master、开发分支 dev,此外针对项目研发的各个阶段,设定了特定的分支。...总结 最后回顾下这几种 git 工作流,集中式工作流可以说是 git 工作流的基础,初学者可以无缝地从 svn 的模式切换到 git 的模式;功能分支工作流在集中式的基础上又引入了功能分支,灵活地利用了

    74930

    写给UI开发的Git入门指南

    一、Git比SVN好在哪里? 1,Git代码更为安全。在SVN集中式版本控制下,项目成员的代码都要提交到一台中央服务器,如果这台服务器出现问题,大家就不能正常工作甚至代码丢失。...能在一个代码仓库里面进行多个分支的任意切换,一个git checkout 命令就能搞定,切换之后本地代码立即自动更新到对应的分支,而不需要像SVN另外拉取分支代码目录 二、Git环境搭建 1,Git傻瓜式安装...分支功能完成之后需要合并到项目主干,首选需要通过git checkout master命令切换到主干,然后运行git merge origin/branchName 命令即可合并分支代码到主干,合并到主干之后同样需要通过...git push命令推送合并了分支的主干到远程代码托管站。...21.jpg 通过以上这些分支操作步骤可以发现,Git的分支切换是相当方便的,不必像SVN那样每个分支都拉取一个项目目录 五、Git GUI之GitHub Desktop 命令行工具可能不太直观,安装Git

    1.5K42
    领券