版本控制的使用,要娃娃抓起 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题复制粘贴 AI 生成的内容
yukirock
V2EX    程序员

版本控制的使用,要娃娃抓起

  •  
  •  
    yukirock 2014-05-29 20:42:59 +08:00 6262 次点击
    这是一个创建于 4154 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大作业的 group work 是拿 Java 写一个迷宫游戏。迷宫生成算法其实不复杂,GUI 虽然很恶心但也能忍,但 git 的使用与队友的表现才令人头大。

    考虑到作业代码不宜公开,所以采用了 Bitbucket 的私有源,然后把最早完成的迷宫部分的代码交了上去。上课时一直使用 Eclipse 写 Java,但 Eclipse 与 git 怎样结合大家似乎都没有研究过。我最早尝试时,如果在 Eclipse 中直接使用 git 的话,所有的代码会归入一个 src 目录。但当时我以为这不对,应该是所有的代码都在根目录下,所以就放弃了通过 Eclipse,一直用另一个目录作为 local git repo,然后与 Eclipse 目录之间手动同步。

    这样虽然蹩脚但还能用,但另一个队友比我还不擅长 git。那边的做法是,Eclipse 里写的代码,直接打开 Bitbucket 的网页编辑器贴进去。版本完全乱套。我后来提交的修改,那边每一次提交都会不留声息地抹掉。

    与此同时分工也没有仔细划分。一开始分工倒还简单,例如谁做后台算法,谁做 GUI,但一来队友对 git 不熟悉,二来有幽灵队友这两天才露面不知道要分什么活好,现在完全出于混乱的境界。完全不知道代码进度,而且也有人在同时做一个东西然后窝工。代码管理也是通过打包然后发邮件或者传到 fb 讨论组这种石器时代的方式共享,好端端的 git 都被我们吃了。

    总结拔高主题,本科生不是病,犯起来要人命。与被队友坑过的各位共勉,也祝各位不被队友坑、不会坑到队友。与此同时也无力地呼吁各位重视版本控制等软件工程工具的重要性,至少对不懂事的本科生来说这个实在是太容易被忽略了。
    35 条回复    2014-06-02 20:39:18 +08:00
    acros
        1
    acros  
       2014-05-29 20:50:11 +08:00   1
    我怎么觉得你队友不是不熟悉工具,是还没明白版本管理工具的运作机理
    yukirock
        2
    yukirock  
    OP
       2014-05-29 20:56:52 +08:00
    @acros
    不是一事= =
    其我校其它程也有涉及些件工程工具的用法,但一不深入,二也有在 group work 中大模使用。
    事上作要求中也提到些西的部分……只是要求要有代的,手日或者拿 git 提交其都可以。
    hitsmaxft
        3
    hitsmaxft  
       2014-05-29 20:57:57 +08:00
    啥都不懂的学生党, 建议 svn 搞起
    yukirock
        4
    yukirock  
    OP
       2014-05-29 21:00:31 +08:00
    @hitsmaxft
    候 svn 反而得麻了吧,要搭一 svn 服器。Git 的有 GitHub,有 Bitbucket 和 Heroku,有 Gitcafe,以大作的模和性我得是 git 更合。
    emric
        5
    emric  
       2014-05-29 21:04:17 +08:00   1
    可以尝试 GUI 的 GIT 例如 SourceTree. 比起命令行, 在团队推广起来方便多了.
    再丢几个 GIT 的知识连接, 基本来说 GIT 问题已经不大了. 剩下的只能让慢慢的让他们领悟了.
    yukirock
        6
    yukirock  
    OP
       2014-05-29 21:10:40 +08:00
    @emric

    但我四人, OS X,一 Arch 一 Ubuntu,GUI 工具可能也有麻……
    不反正我校生用果本的已越越多了,我也早已磨刀霍霍向果店。
    我大概也算是高估了友用 git 的能力,因我想着竟作院生技能也是有的……再也是 ABC,有英文的啊。
    hitsmaxft
        7
    hitsmaxft  
       2014-05-29 21:17:12 +08:00
    @yukirock 为了共享点代码, 就直接上 git, 过了, 仅此而已. 不过 svn 服务器不好搭倒也不至于, sourceforge 和 google code 貌似还是支持, 只是年代久远了, 不太记得.
    palytoxin
        8
    palytoxin  
       2014-05-29 21:18:07 +08:00
    讲真,这种情况svn虽然好不到哪里去,但是比git一定是强不少。eclipse我记得是用egit这个插件管理。

    第一次用svn是在windows上用totoriseSVN,客户端服务器端都方便的多。
    git的服务器端自己搭超麻烦,用gitlab也是个不错的选择
    jsonline
        9
    jsonline  
       2014-05-29 21:19:39 +08:00
    呵呵,工具没问题,人有问题。
    yukirock
        10
    yukirock  
    OP
       2014-05-29 21:27:02 +08:00
    @hitsmaxft @palytoxin
    我是平自己玩所以 git 一套比熟,所以一始就怎考 svn。再 git 和 svn 我都有搭服器的,但 git 方面已有 GitHub 等工具了。
    大作也有限制,如果要去熟悉不常用的工具可能不及,竟手有的科目的作。
    davidli
        11
    davidli  
       2014-05-29 21:39:54 +08:00
    为什么本科的Team project还需要版本控制?
    不都是找个周末边喝可乐边通宵,然后一晚上直接搞定的么
    F1ReKing
        12
    F1ReKing  
       2014-05-29 21:41:55 +08:00
    Eclipse 使用Git的话 推荐插件EGit,可以定义不同的分支,这样就可以控制版本了 带上: http://download.eclipse.org/egit/updates/
    yukirock
        13
    yukirock  
    OP
       2014-05-29 21:42:12 +0800
    @davidli
    光是迷算法我就了整整一天,上 awt/swing 那一套我乾脆手拿菜刀上街裸奔算了……
    yukirock
        14
    yukirock  
    OP
       2014-05-29 21:43:03 +08:00
    @fireking
    我最早用的就是,但是研究透就草草工了。
    算是本次大作得的教之一。
    以及多推。
    kyze8439690
        15
    kyze8439690  
       2014-05-29 21:57:59 +08:00   1
    你应该把为什么要这样做教给他,想我也是大二的时候从朋友那些学会版本控制这种东西....
    lincanbin
        16
    lincanbin  
       2014-05-30 00:36:10 +08:00
    Git用起来确实还是比较麻烦的,你可以先从GUI的git开始,然后再让他们学Shell
    例如TortoiseGit就不错,甚至我觉得Shell可有可无了。
    jetbillwin
        17
    jetbillwin  
       2014-05-30 00:38:46 +08:00
    这个情况下可以直接用dropbox啊,而且本身也带版本管理……自从经历了一次文件丢失之后,我就是git+dropbox双保险
    yukirock
        18
    yukirock  
    OP
       2014-05-30 02:56:44 +08:00
    @kyze8439690 @lincanbin
    我校也有版本管理件工程的科目,但竟各人度不同,我不知道有有接。接的感再去太逼了。

    我用 git 一始就是 CLI 上手的,GUI 怎用我完全有。我多告面,我用 git,商量一下公共 repo 怎,剩下的我得必要一一……哪怕是老也只管,我那 TA 又是在校生, UML/CRC cards 些西他自己也高不清楚,些程大上的更不了。

    @jetbillwin
    我有人 group work 拿 Dropbox 活的……而且那版本管理根本不活用的。
    Git + Dropbox 保倒是必,我一同前天本差弄,找回之後上就把所有重要的西份到 Dropbox 了。
    我了 50G 的永久容量。
    fishleen
        19
    fishleen  
       2014-05-30 04:32:05 +08:00   1
    为什么用arch, ubuntu的不习惯git命令行啊,找个简单教程,不超过一下午基本的git命令都能学会啦。

    话说我们农村学校不要说project course了,就是做hackthon一群人也是用git来做。而且我们学校自己有搭git,连bitbucket都不用,校内学校服务器速度非常快,而且也有web直观化的log,diff和network(就是私人的github)。

    Eclipse的话能设置.gitignore,搜索.gitignore java就可以啦~别人可以git clone之后直接导入的,只要是同一个project。

    不过也有比较脑残的实验室不用任何版本控制,直接zip然后email,碰到这种队伍我都直接绕着走的。
    20150517
        20
    20150517  
       2014-05-30 04:52:08 +08:00
    说实话,这么小的项目,而且每次提交改动不大的话,用git还不如直接用svn,git相对优势是因为svn整天要merge出来做开发,而不影响trunk比较麻烦,但你们一个作业什么,都是只在一个master上改来改去,做git每次要来个commit,然后再push,好麻烦,意思不大....真有必要git吗?觉得好多人盲目崇拜git过了
    nooper
        21
    nooper  
       2014-05-30 07:47:12 +08:00 via iPhone
    pull request
    CoX
        22
    CoX  
       2014-05-30 08:05:31 +08:00 via Android
    LZ团队应该抽出一天时间来学习一下git,其他啥都不干
    磨刀不误砍柴工啊
    TK
        23
    TK  
       2014-05-30 08:20:15 +08:00
    怎么都因为私有repo放弃github……教育账号申请一个就有5个free private repo啊……
    clino
        24
    clino  
       2014-05-30 09:05:25 +08:00
    自己用gerrit搭一个git服务,然后强制每人的提交都要别人review过再合并
    anheiyouxia
        25
    anheiyouxia  
       2014-05-30 09:21:24 +08:00 via Android
    没用过git,但是我觉得svn是非常简单的工具,如果觉得搭建麻烦或者不会搭建,那直接在Googlecode创建一个项目,名字就用乱一点的名字,基本不用担心泄露的问题。
    然后既然是用eclipse,装上插件后,每次写之前update一下,写完代码一commit就是了,有冲突,手动解决一下。
    Mutoo
        26
    Mutoo  
       2014-05-30 09:39:41 +08:00
    最好的 java ide,自带超好用 git/svn 集成,小白值得拥有。
    http://www.jetbrains.com/idea/

    社区版免费。
    leopanhf
        27
    leopanhf  
       2014-05-30 09:42:13 +08:00
    很显然你们完全都没有沟通啊。跟工具没关系吧。
    FatGhosta
        28
    FatGhosta  
       2014-05-30 09:50:17 +08:00
    eclipse上有egit,但是如果对git操作不熟悉,用egit也是坑。
    @fireking
    wizardoz
        29
    wizardoz  
       2014-05-30 10:02:16 +08:00
    同意一楼说法,你的队友不仅是不熟悉工具。而是完全不理解版本控制为何物。有必要先开个会沟通一下,大家分享一下对版本控制的看法以及使用技巧。工欲善其事,必先利其器。
    hualuogeng
        30
    hualuogeng  
       2014-05-30 10:43:21 +08:00
    楼主缺的是一本适合GIT入门的书
    kooyou
        31
    kooyou  
       2014-05-30 10:51:02 +08:00
    楼主不是本科生?主要还是没沟通吧。。。
    wudoo59
        32
    wudoo59  
       2014-05-30 10:58:16 +08:00
    我想问大家git都是到哪里学的,还是直接官方网站看帮组内容啊。
    Panic
        33
    Panic  
       2014-05-30 11:00:25 +08:00
    一上来就多人协作使用git何必呢, 我现在也只在自己个人项目里试试git,公司多人还是使用svn, 你不搞多分支的话肯定够了。 使用git只能看起来高大上了
    lincanbin
        34
    lincanbin  
       2014-05-30 12:02:49 +08:00
    @yukirock GUI比Shell好很多,你如果要教他们的话,两三分钟教会Sync、Commit、Push这几个基本操作,问题不大。
    kaneg
        35
    kaneg  
       2014-06-02 20:39:18 +08:00
    Git就不是给菜鸟用的。几个人的小团队用SVN是在合适不过的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5522 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:33 PVG 15:33 LAX 00:33 JFK 03:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86