公司开发部门 GIT SVN 之争

2015-07-28 11:37:47 +08:00
 Navee
公司最开始决定是使用GIT作为版本控制 , 也都使用了4,5个月了 , 开发人员也都是20多岁年轻力壮的年轻人 , 每个组的组长也一直在做git使用的培训 , 即使是这样 , 还是遇到了非常大的阻碍 , 主要是如下几点 :
1.代码合并导致代码丢失
2.很多人对代码commit到本地后还要push到remote表示很不解
3.个别同事经常反馈commit的记录丢失
因为很多同事都遇到这3个问题 , 所以普偏反馈建议改为SVN作为版本控制 , 特别是接连好几次有同事反馈了第三个问题 , 我和运维都表示很吃惊 , 表示绝对不会出现丢失的情况 ; 但是公司的领导看到这样的反馈 , 还是建议采纳开发的建议 , 改为SVN , 然后运维就将GIT 改为了SVN

个人的一点看法:
对于第一点 , 我觉得完全是开发人员自己的问题造成的 , 如果开发人员不找到自己的原因 , SVN也会出现合并造成代码丢失的问题
第3点问题 , 当时有人说这样的问题 , 我表示也是非常的诧异的 , 我自己也是刚用git , 但是也觉得并不会出现这样的问题 , 之道有一次自己做了这样一个操作 , 在一个branch上checkout了一个commit,然后在这个commit的基础上做了一下修改,然后commit了,最后checkout 原有branch时发现 , 这个commit在branch的log上是不存在的 , 由此我猜测是不是当时那位遇到commit丢失的同事是否也是像我这样操作了 ;

总之用了一个多月的git , 觉得git在需要频繁修改bug的场景下 , 发挥巨大优势的branch比svn还是要好用很多的 ; 发表这个帖子并不是想说git 比svn好用 (LZ在一个公司使用过2年的Microsoft sourcesafe , 那种恶心的版本控制简直不想再提) , 而是提一下自己以及同事在使用git确实会遇到一些影响开发的问题 .
20607 次点击
所在节点    程序员
215 条回复
viator42
2015-07-28 12:43:45 +08:00
你没有把修改的这个commit给merge过去当然不会有了. 用git流程很重要,至少有一个主分支保证所有的commit都合并到这个上面.不然合并来合并去就成一锅面条了.
mulog
2015-07-28 12:44:33 +08:00
天哪就不能用一两个小时读读 tutorial 吗。。。
printf 都没学会就不要讨论哪个语言是最好的语言了。。
yueyoum
2015-07-28 12:45:23 +08:00
@zongwan 我没用过 xcode,但是你说的 IDE自动生成的东西,不是应该要 gitignore 吗?

进入仓库的只有 代码,项目配置, IDE配置 这些大家都一样的东西。
如果上面的东西一样了, IDE自动生成的东西 也不会出错吧。
chocotan
2015-07-28 12:46:29 +08:00
checkout之前的commit的时候,会提示:

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name
pythoner
2015-07-28 12:48:31 +08:00
你们的逻辑很奇怪
明显是使用工具的方法有问题,却把问题归结与工具本身
networm
2015-07-28 12:49:39 +08:00
我认为很重要的一点在于 ProGit 第一版较老,毕竟是五年前写的,而 ProGit 第二版很新,其中讲解了大量的以前版本没有的知识,特别是关于如何恢复内容,正确的工作流程。

ProGit 第二版中文版 内容已全部翻译完毕,但是还未完整的审校,整个项目大概只有几个活跃的审校人员,在此希望大家能为中文版的发布贡献一份力量。

ProGit 2nd 中文版 审校协作计划 - V2EX
https://v2ex.com/t/202180
xuyuheng0905
2015-07-28 12:50:06 +08:00
git push --force 必然丢数据,楼主下次出现这样的问题之后,马上用git log --online --decorate --graph --all看一下你本地的分支情况,如果发现你正在改的分支已经不是跟踪的远端分支,那么估计是有人遇到冲突,直接强推服务器,导致服务端提交丢失了。
zongwan
2015-07-28 12:51:15 +08:00
@yueyoum
@chloerei

我帮同事看的时候
这个文件是 文本类型 后缀名 是xcode相关的 如 xib 后缀
里面有 view结构 和文件 md5

有xcode大神 能帮忙分析下 可以添加到 gitignore里面吗?
xuyuheng0905
2015-07-28 12:51:56 +08:00
然后看远端分支和本地分支不同的第一个提交,然后找到提交那个人,就是他把数据弄丢了。
qinglangee
2015-07-28 12:52:41 +08:00
@sortbylist 公司决定用git且用了4,5个月了,还有人把会丢记录的那些操作当作是正确操作. 要不就是真是智力有限学了不了 git, 要不就是根本没拿出哪怕一两个小时来学一下. 这样的程序员辞掉我觉得真没什么问题. 只不过楼主他们公司这种人太多, 辞掉不辞掉都够受的
xuyuheng0905
2015-07-28 12:52:48 +08:00
@zongwan 不可以
zongwan
2015-07-28 12:53:46 +08:00
Nib/Xib文件的产生,编译和运行本质 - Ian的日志 - 网易博客
http://heidianfeng.blog.163.com/blog/static/6184345620107311175472/

```
另外建议工程里面全部使用xib,如果是nib3.0,也赶紧转换吧。因为nib2.0/3.0编译后nib中包含的界面信息不会被去除,程序发布出去后别人可以打开你的nib进行编辑查看的。
xib编译后生成二进制的nib文件,这个是不可打开编辑的,所以不会暴露你的接口什么的信息,而且如果包含二进制文件的话,你的代码管理系统是不能merge or diff的。
```

-----
目前找到的信息 是无解
只能分开时间动这个文件相关的功能
chocotan
2015-07-28 12:53:49 +08:00
楼主根本不是在master分支提交的: 修改a文件提交一版a003
master分支怎么可能会有
happypy1
2015-07-28 12:55:00 +08:00
@zongwan
https://github.com/github/gitignore

这个有已经写好了的忽略xcode生成的文件的配置文件
zythum
2015-07-28 12:55:50 +08:00
首先git并不傻瓜。并且命令多。做同一件事情可以用很多方法完成。学习成本比较大。
svn比git简单。基本上命令对于事务是1对1的。学习成本比较小。

git之所以现在流行是因为git在一个合适的时间进入了大家的视野。然后又有一些合适人推波逐流了。

git没有对于svn的绝对优势。上面说svn服务器文件系统挂了。我不能做个备份么。对于svn来说,公司对于代码的管理力度还更大呢。svn还能规定某个账号只能改某个文件目录呢。

所谓工具。用的顺手的,满足自己需求的就是好工具。没有绝对的好工具。就好比Mac osx 和window 哪个操作系统好一样的。
ieiayaobb
2015-07-28 12:56:32 +08:00
肯定是有人强制提交了啊,揪出来暴打
zongwan
2015-07-28 12:57:03 +08:00
针对楼主这种情况
我建议 走pull request方式 教学下
这样不会丢文件

开发在自己分支 玩坏了自己的分支 求教导下就好了

最后合并到 产品分支的时候
可以处女座下 用git diff 的patch 来合并,去掉重复修改的记录. 比如 文件名更换 , 文件名 又换回来这种记录
方便code review
andyhuzhill
2015-07-28 12:58:34 +08:00
@Navee 我照着你这样用 git会有报警啊 分离的头指针。
我想你还是没有理解git到底是怎么回事 还是再看看 progit吧
zongwan
2015-07-28 12:59:02 +08:00
@zongwan
当然 pull request方式
针对某些IDE文件 如 xib , 二进制之类 还是无解
需要协调工作流程..
andyhuzhill
2015-07-28 13:00:34 +08:00
@Andiry 想请教一下 什么情况下会遇到文件系统挂掉?

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

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

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

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

© 2021 V2EX