公司从 SVN 切换到 Git 的那些坑

2021-12-03 13:29:15 +08:00
 villivateur

为了实现代码检视( Pull Request )这个功能,公司从 SVN 切换到了 Git ,但是不少人遇到了下面的问题:

  1. 没有理解 Git 的工作区、暂存区、仓库区、远端之间的关系,用 SVN 的思维去使用 Git ,比如会通过删除工作区文件、再拉取代码这种方式来回退代码。
  2. 在修改工作区文件后,没有 commit 或者 stash ,就 pull 代码,导致提示冲突,因为不熟练所以不知道如何解决。
  3. 之前 SVN 仓库中有很多需要经常修改的大二进制文件,初期迁移的时候没有用 LFS 管理,导致 Git 仓库庞大,clone 要花很长时间。
  4. 使用 LFS 后,因为各个用户终端配置不一样,可能有的人没有装 LFS ,提交后,其他人再 pull ,会出现很多奇怪的问题。

感觉从 SVN 切换到 Git ,还是要慎重,至少要培训熟练。

8270 次点击
所在节点    程序员
68 条回复
haochen2
2021-12-03 13:48:51 +08:00
git 应该是一个合格开发人员最基本的技能了吧,对 pull 、push ,merge ,rebase 等等不熟可以在 github 上建个仓库练一练
VeryZero
2021-12-03 13:50:01 +08:00
统一培训很重要
wdwwtzy
2021-12-03 13:52:40 +08:00
2021 年了,git 应该是基本技能了,不会的开除好了 🙂
JeepLi
2021-12-03 13:54:22 +08:00
公司工具这么落伍,赶紧离职吧
lixile
2021-12-03 13:55:08 +08:00
1.理解问题无法解决 多用多学习 不要停留在 SVN 基础上
2.及时提交 及时 commit 及时 push 及时 pull ,流程上注意区分开发分支,release 分支,个人分支。多看看 git flow 或者说叫 git 工作流
3. git 大文件存储和二级制文件跟踪是不太好,建议重新迁移洗仓,写好通用.gitignore ,话说你们没配置管理的人吗
4.研发环境统一话 建议采用编写通用工具安装脚本,毕竟很多开发 终究只是普通开发罢了 ,不关注工具,不关注流程,不关注代码仓本身也是交付件这回事
kop1989
2021-12-03 13:59:33 +08:00
其实从文件管理角度讲,SVN 和 Git 在逻辑上没有区别。
区别只在于本机的 Git 仓库和 Git server 的同步(推送、拉取)上。这块是 svn 没有的逻辑。

如果想明白了这点,绝大多数智商正常的人都能熟练的从 SVN 的使用习惯迁移到 Git 。
kop1989
2021-12-03 14:01:23 +08:00
还有就是 SVN 和 Git 是两种不同需求的产物,没有“先进”和“落伍”。
murmur
2021-12-03 14:05:59 +08:00
不习惯 git 装个图形客户端不行么,冲突了无外乎用你的,用我的,自己合完提交一个新的
rm0gang0rf
2021-12-03 14:07:47 +08:00
不会 git 的飘过~基本的 pull 、push ,merge ,rebase..可以
pengtdyd
2021-12-03 14:08:06 +08:00
没有系统的培训,出问题不是很正常吗
xlsepiphone
2021-12-03 14:10:10 +08:00
git 的图形化工具除了在解决冲突或者 diff 的时候挺方便的,其余的我觉得都没有命令行方便。
kop1989
2021-12-03 14:15:15 +08:00
针对 append:不太理解为何第三方工具会导致“出了错都不知道啥原因,也不了解原理”。
1 、第三方工具的操作,只是 git 命令的图形化。
2 、第三方工具也会把他进行的操作输出。
3 、第三方工具会自动根据场景提示接下来可能的操作以及其结果。出错的可能性反而更低。
murmur
2021-12-03 14:15:28 +08:00
@xlsepiphone 那可是乱说,提交的时候旁边显示下改动是基本功能,你命令行怎么做到点一个文件看一下哪里改了

我习惯提交前最终确认一下,有时候我就发现按快捷键了但是快捷键没生效,倒是什么 C 啊 V 啊 F 啊都写到代码里去了。。
murmur
2021-12-03 14:16:50 +08:00
图形化操作:暂存所有 立即推送到 origin/master 提交 完事了,跟 svn 没区别
gengchun
2021-12-03 14:22:02 +08:00
@JeepLi 一般来说,市场和生产资料比生产工具重要。

软件开发培训和教程,几乎都是在教怎么拿着屠龙刀杀鸡。大部分公司的实际开发流程,其实也用不到太多 git 的特性。

现在换 git 还是有点必要,主要是现在市场上配套的 CI/CD 和其它工作流工具都是基于 git 的,不切到 git ,后面很多时髦的东西就没有理由买了。
quanjw
2021-12-03 14:29:50 +08:00
个人理解:svn 只有一个主干,git 可以有 master 、test 、dev 分支。人少随便用哪个都行,多人还是 git
xmsz
2021-12-03 14:42:15 +08:00
这种就是传统思维下的历史成本
不愿意抛弃已有的认知去学习新的东西

------



当然,你用已有的知识去学习新东西是可行,但前提你得懂什么叫『抽象化』什么叫『融会贯通』(当然这个词选得不好)

大概例子就是,比如你已经 [精通] 一门乐器,那你再学习另外一种 [同类型] 的乐器时,那你以往的知识就是有帮助的

或者如果你掌握都是 [通用] 的 [方法论] ,那你学习什么都用得上。比如如何快速阅读一本书

否则你只会被你以往的经验束缚,并且可能走错方向



-----


当然额外的说明

像这种很 [通用] [现代] 的技术,或者 [新] 的技术方案,入门门槛难道会变得更难?
如果更难,那不就退步了?


或者说,如果你让一个没接触的人去学习,你会发现他学习非常的快
sjzjams
2021-12-03 14:43:28 +08:00
@quanjw 那你也太看不起 svn 了哈哈。。。
\r\n
这个管理工具怎么会有冲突,“svn 的思维去使用 git” 就很离谱啊,最基础的使用方式网上一看就知道。。怎么用 svn 还给用的固话思维了!!哈哈
bitllion
2021-12-03 14:58:50 +08:00
https://learngitbranching.js.org/?locale=zh_CN 这个练习 git 不错用动画的形式展示
CodeCodeStudy
2021-12-03 14:59:51 +08:00
图形化工具很重要,可以尝试使用 IDEA 进行 git 操作

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

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

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

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

© 2021 V2EX