从 svn 迁到 git,求教大家单位上 git 都是怎么用的?

2015-09-10 00:36:22 +08:00
 oska874

项目组刚开始新一轮的工作,我就再内网服务器上用 gitlab 搭建了一个 git 服务器——不用 github 的原因是钱、速度 /功夫网、领导们不放心。公司以往用的都是 svn ,但是因为项目刚开始,所以 svn 还没有在新项目全面使用。想着趁 svn 还没有全部使用的机会,推广一下 git ,但是没有说服领导们,在他们看来 git 最大的好处就是分布式管理,可以在本地 push/pull ,除此之外和 svn 区别也不大。如果换做大家,能怎么说服经理们从 svn 转到 git ?

ps :以前公司用的 ms 的 tfs ,自己用 git 也不是很熟练,但是 git 的速度要比 tfs 快太多了。

4577 次点击
所在节点    git
38 条回复
msg7086
2015-09-10 03:24:47 +08:00
Git 可以用来提高源码库的质量。
由于 Git 的分支免费,所以可以按照功能开分支开发完再合并。参考 Git Flow 流程(轻量版)。
另外这不是说服的问题。跟风上 Git 其实不见得是个好事,最好是用 SVN 遇到坑了或者受不了分支的高昂代价了再趁机转。
cxbig
2015-09-10 04:22:17 +08:00
先参考这个对 git flow 的概念有一个大概的了解
http://nvie.com/posts/a-successful-git-branching-model/
然后根据自己团队的情况酌情处理命名规范、分支安排,切记不要

git 的最大好处有 2 点:
1. 快速开发的时候团队作业免不了遇到 conflict , svn 提交的时候发现其他人已经提交而且有 conflict ,想 checkout 也因为 conflict 无法正常进行,那么这时候程序员会很烦躁, git 用分支结构,每个人走一个分支, conflict 机会少,在代码合并的时候一次性处理 conflict ,压力不会太大。
2. 每个人都有 repo 的本地 copy ,各种 commit 版本切换不需依赖服务器, svn 就不行
cxbig
2015-09-10 04:23:44 +08:00
按错键发出去了,第三行漏了一句:
切记不要生搬硬套。
bbx
2015-09-10 05:43:41 +08:00
tfs 能用?呵呵。。。
bbx
2015-09-10 05:45:05 +08:00
而且我觉得 git 其实并不难,基本几个命令熟练就差不多了。
stats, checkout, commit, add, pull, push....
582033
2015-09-10 06:51:46 +08:00
查看 svn 历史
svn info svn://svn.test.co/foo/
svn log -l{num} #limit

从指定版本检出
git svn clone -r{svnNum}:HEAD {svnUrl}

git svn clone -r100:HEAD svn://svn.test.co/foo/

检出前,可以使用 svn 命令来查看最近{num}条记录
582033
2015-09-10 06:53:58 +08:00
如果 1 你是技术股干, 2 你是领导,否则还是不要试图说服
shoaly
2015-09-10 07:56:19 +08:00
自己都不熟悉还是别了, 项目最重要的是稳定性, 大家碰到刚转过去的水土不服, 多半会转向你, 如果你也说不出个所以然, 大家会转回 svn , 还会对你刮目相看的... 说实话, svn 和 git 我目前是同时使用的, 会 git 的人自然回不去 svn 了, 设计师, 前端工程师这种轻量级的, svn 其实足够了, 也会让他们的工作轻松不少.
582033
2015-09-10 08:18:02 +08:00
同意楼上看法
hantsy
2015-09-10 08:37:02 +08:00
@cxbig 分支合并到主分支的时候冲突也会很多的。


@oska874

Git 使用中分支是关键,我日常用到的命令包括: pull, push, fetch, merge, checkout, branch, reflog, rebase, reset, cherry-pick.

1. Github 提供简单互动的教程。

2. 建议好好看下 Atlassian 的教程。 https://www.atlassian.com/git/tutorials/
mozartgho
2015-09-10 09:03:24 +08:00
@msg7086 什么叫“ Git 的分支免费”? SVN 分支收你钱了?
mozartgho
2015-09-10 09:05:43 +08:00
@cxbig 关于你的第 1 点,难道 SVN 不能建分支?
mozartgho
2015-09-10 09:10:20 +08:00
你们这些 git 党,都没有说到点上。 git 最重要的优点是分布式的数据库,还有就是 code review 比较方便,直接起个 pull request 。
oska874
2015-09-10 09:31:46 +08:00
@mozartgho 的确,分布式是最大的优点。
@shoaly @582033 正因为目前是刚开始,项目成员以前也不全是用过 svn 的,所以历史包袱还是很轻的,但是领导们以前一直在用 svn ,所以。
@bbx 不能鄙视 tfs , 以前公司就是从免费的 svn 迁移到收费的 tfs 的, tfs 很容易上手。
yinheli
2015-09-10 09:34:13 +08:00
lz 好幸福, 我推广了两年都没成功. 只能使用 svn
wizardoz
2015-09-10 09:43:39 +08:00
@mozartgho 他说的分支免费是指分支不占用额外的空间。在 git 中,一个分支所占用的空间只是该分支和分叉点的 diff 而已。而在 SVN 中,每创建一个分支都是把分支的数据重新 copy 一份。
wizardoz
2015-09-10 09:46:23 +08:00
当然 svn 也有比 git 好用的地方,我觉得最明显的就是 svn 可以 co 一个子路径, git 只能 clone 这个项目。
msg7086
2015-09-10 09:48:17 +08:00
@mozartgho SVN 分支代价很大的。
比如说我们公司光 Git 库就已经 3G+了,如果换用 SVN 的话,一个 repo 几十 G 都有可能。
每次分支就得额外克隆个几百 M ,谁吃得消。
克隆一次假如要浪费 5 分钟,那么公司里几十几百次的克隆要浪费多少宝贵的时间?
这些时间难道不是钱?

当然可能有些企业不在乎。
「不就是晚几个星期发布产品嘛,无所谓」
「不就是让员工多加班几天嘛,无所谓」
可有些人在乎。

还是说你没有参与过稍微有点规模的项目?

「 code review 比较方便」你以为没有 git 这样的超低代价分支,你能这么轻松做 code review 和 pr ?能有 Git Flow 这种方便的工作流程?

就拿 mercurial 这样支持分布式但分支有轻微代价的版本管理系统来说好了。
你看看现在 Git 用户和 Hg 用户各有多少?
更何况 SVN 这种超重代价分支的系统了。

如果真的特别喜欢 SVN 这种开发模型的,也至少去用 Hg 吧。

坚守 SVN 我只能想到一个理由,那就是严格权限管理。
kqz901002
2015-09-10 10:06:53 +08:00
@msg7086 还有一点, git 太过复杂, svn 比较简单。我推广了很久 git ,结果还是换成了 svn+reviewboard
mozartgho
2015-09-10 10:13:34 +08:00
@wizardoz
@msg7086 你们确信在 SVN1.8.9 上创建分支是完整地重新拷贝一份代码?而不是基于 diff ? 建议你们动手试一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/219512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX