my-git

English 中文

使用svn用的好好的,为什么要用git?git有哪些优势?又有哪些劣势?在日常使用中两者明显的差异是什么?

(关于 svn 的使用,一起来回顾一下 How To Use Svn in Daily Work

以下内容出自 @oldratleerepo

SVN 和 Git 在日常使用中的明显差异

git vs svn

:point_right: 自己在使用git过程中相对svn的感受强烈的变化。

:beer: 合并对提交过程的保留

保留原有的提交过程,可以无需繁琐追踪历史就方便的

  1. 跟踪修改过程。
  2. 直接从提交中就可以看到原提交的作者信息,体现了对作者的尊重。
  3. 自然的提交过程。这极大方便了代码细节演进过程的查看。
  4. 极大方便查出那行提交是什么时间、谁做出的。
    svn因为合并Crash了自然的提交过程,要追踪很痛苦。

:beer: 修正提交

实际使用中会有误提交的情况(如提交了一个不该提交的日志文件),对于svn来说,就是让大家一遍又一遍看到这个垃圾文件。

没有干净的提交,严重影响了Code Review,增加成本。

另外对于想了解演进过程的同学,垃圾提交影响了了解效果。

:beer: 廉价好用的本地分支

git可以方便创建本地分支,且创建分支的时间是O(1),即瞬间就创建好了。由于分支可以是本地的,也就不存在svn目录权限的问题。

可以从想要工作点闪电般创建本地分支,本地实验不确定的修改,创建分支如此之廉价,git推荐创建分支来隔离修改。

:beer: 更强大智能的合并能力

因为惧怕svn树冲突,在包名调整(重命名目录)或类名调整(重命名文件)前,我不得不先向一起开发的组员广播:

  1. 提交你的修改
  2. 暂停相关类的修改
  3. 我开始做调整
  4. 等我修改好后:scream:,你再开始修改

OMG~ :confounded:~~

因为这个过程烦琐,结果就是影响了大家去做这样重构操作的积极性,进而影响项目的代码质量改进!

别忘了,如果你的项目是开源的,全球的人可以给你提交,可没有办法向全球的同学广播 :kissing:

:beer: 一等公民支持tag

内心是不是有强烈的安全感? :sparkles:

:beer: 完整配套的开发过程设施

git配套的githubgitlab(我们公司搭建了)提供了:

记住,上面的一切和代码一起集中管理,是以代码为中心的,可以方便的工程中的代码。

可运行并完成功能的代码(且叫目标代码) 才是整体项目真正生效的产出。

一切不为 目标代码 服务 的东东都是 流氓
# 是不是想到很多东西(比如下压式的排期计划)会觉得自己是生效的产出,好像剩下的事就是 码农搬砖一样把代码码好。

:beer: 热操作有闪电般的速度

提交

这让开发者更愿意整理提交,让每个提交更内聚自包含。进而有利于

查看日志

查看日志是个频繁的操作。

一旦用了git后,等待svn日志(包括查看2个版本间的diff)过程简直让我发狂。 duide