V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yukirock
V2EX  ›  程序员

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

  •  
  •   yukirock · 2014-05-29 20:42:59 +08:00 · 5831 次点击
    这是一个创建于 3834 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大作业的 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 +08:00
    @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   ·   实用小工具   ·   5901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:58 · PVG 10:58 · LAX 18:58 · JFK 21:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.