• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yukirock
V2EX  ›  程序员

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

  •  
  •   yukirock · May 29, 2014 · 6711 views
    This topic created in 4390 days ago, the information mentioned may be changed or developed.
    大作业的 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 replies    2014-06-02 20:39:18 +08:00
    acros
        1
    acros  
       May 29, 2014   ❤️ 1
    我怎么觉得你队友不是不熟悉工具,是还没明白版本管理工具的运作机理····
    yukirock
        2
    yukirock  
    OP
       May 29, 2014
    @acros
    這不是一碼事麼= =
    其實我校其它課程也有涉及這些軟件工程工具的用法,但一來不深入,二來也沒有在 group work 中大規模使用過。
    事實上作業要求中也沒提到這些東西的部分……只是要求要有編寫代碼的記錄,手寫日誌或者拿 git 提交記錄其實都可以。
    hitsmaxft
        3
    hitsmaxft  
       May 29, 2014
    啥都不懂的学生党, 建议 svn 搞起
    yukirock
        4
    yukirock  
    OP
       May 29, 2014
    @hitsmaxft
    這種時候 svn 反而顯得麻煩了吧,還要搭一個 svn 服務器。Git 的話有 GitHub,還有 Bitbucket 和 Heroku,國內還有 Gitcafe,以這種大作業的規模和性質我覺得還是 git 更適合。
    emric
        5
    emric  
       May 29, 2014   ❤️ 1
    可以尝试 GUI 的 GIT 例如 SourceTree. 比起命令行, 在团队推广起来方便多了.
    再丢几个 GIT 的知识连接, 基本来说 GIT 问题已经不大了. 剩下的只能让慢慢的让他们领悟了.
    yukirock
        6
    yukirock  
    OP
       May 29, 2014
    @emric
    讚。
    但我們這四個人,兩個 OS X,一個 Arch 一個 Ubuntu,GUI 工具可能也有麻煩……
    不過反正我校師生用蘋果本的已經越來越多了,我也早已磨刀霍霍向蘋果店。
    我大概也算是高估了隊友用 git 的能力,因爲我想着畢竟作爲計院學生這點技能應該也是有的……再說也是 ABC,沒有讀英文的難題啊。
    hitsmaxft
        7
    hitsmaxft  
       May 29, 2014
    @yukirock 为了共享点代码, 就直接上 git, 过了, 仅此而已. 不过 svn 服务器不好搭倒也不至于, sourceforge 和 google code 貌似还是支持, 只是年代久远了, 不太记得.
    palytoxin
        8
    palytoxin  
       May 29, 2014
    讲真,这种情况svn虽然好不到哪里去,但是比git一定是强不少。eclipse我记得是用egit这个插件管理。

    第一次用svn是在windows上用totoriseSVN,客户端服务器端都方便的多。
    git的服务器端自己搭超麻烦,用gitlab也是个不错的选择
    jsonline
        9
    jsonline  
       May 29, 2014
    呵呵,工具没问题,人有问题。
    yukirock
        10
    yukirock  
    OP
       May 29, 2014
    @hitsmaxft @palytoxin
    我是平時自己玩所以對 git 一套比較熟,所以一開始就沒怎麼考慮 svn。再說 git 和 svn 我都沒有搭服務器的經驗,但 git 方面已經有 GitHub 等工具了。
    大作業也有時間限制,如果還要去熟悉不常用的工具時間可能會來不及,畢竟手頭還有別的科目的作業。
    davidli
        11
    davidli  
       May 29, 2014
    为什么本科的Team project还需要版本控制?
    不都是找个周末边喝可乐边通宵,然后一晚上直接搞定的么
    F1ReKing
        12
    F1ReKing  
       May 29, 2014
    Eclipse 使用Git的话 推荐插件EGit,可以定义不同的分支,这样就可以控制版本了 带上: http://download.eclipse.org/egit/updates/
    yukirock
        13
    yukirock  
    OP
       May 29, 2014
    @davidli
    光是迷宮算法我就幹了整整一天,帶上 awt/swing 那一套我乾脆手拿菜刀上街裸奔算了……
    yukirock
        14
    yukirock  
    OP
       May 29, 2014
    @fireking
    我最早用的就是這個,但是沒研究透就草草開工了。
    這算是本次大作業獲得的教訓之一。
    以及多謝推薦。
    kyze8439690
        15
    kyze8439690  
       May 29, 2014   ❤️ 1
    你应该把为什么要这样做教给他,想我也是大二的时候从朋友那些学会版本控制这种东西....
    lincanbin
        16
    lincanbin  
       May 30, 2014
    Git用起来确实还是比较麻烦的,你可以先从GUI的git开始,然后再让他们学Shell
    例如TortoiseGit就不错,甚至我觉得Shell可有可无了。
    jetbillwin
        17
    jetbillwin  
       May 30, 2014
    这个情况下可以直接用dropbox啊,而且本身也带版本管理……自从经历了一次文件丢失之后,我就是git+dropbox双保险
    yukirock
        18
    yukirock  
    OP
       May 30, 2014
    @kyze8439690 @lincanbin
    我校也有設計版本管理這種軟件工程的科目,但畢竟各人選課進度不同,我不知道這邊有沒有接觸過。接觸過的話感覺再去講太裝逼了。

    我用 git 一開始就是 CLI 上手的,GUI 怎麼用我完全沒有經驗。我頂多告訴對面說,我們用 git,商量一下公共 repo 怎麼寫,剩下的細節我覺得沒必要一一說……哪怕是老師也只管講課,我們那個 TA 又是在校生,連 UML/CRC cards 這些東西他自己也高不清楚,這些課程大綱上沒寫的更不會講了。

    @jetbillwin
    我沒聽說過有人 group work 拿 Dropbox 幹活的……而且那個版本管理根本不夠幹活用的。
    Git + Dropbox 雙保險倒是必備,我一同學前兩天筆記本差點弄丟,找回來之後馬上就把所有重要的東西備份到 Dropbox 來了。
    我買了 50G 的永久容量。
    fishleen
        19
    fishleen  
       May 30, 2014   ❤️ 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  
       May 30, 2014
    说实话,这么小的项目,而且每次提交改动不大的话,用git还不如直接用svn,git相对优势是因为svn整天要merge出来做开发,而不影响trunk比较麻烦,但你们一个作业什么,都是只在一个master上改来改去,做git每次要来个commit,然后再push,好麻烦,意思不大....真有必要git吗?觉得好多人盲目崇拜git过了
    nooper
        21
    nooper  
       May 30, 2014 via iPhone
    pull request
    CoX
        22
    CoX  
       May 30, 2014 via Android
    LZ团队应该抽出一天时间来学习一下git,其他啥都不干
    磨刀不误砍柴工啊
    TK
        23
    TK  
       May 30, 2014
    怎么都因为私有repo放弃github……教育账号申请一个就有5个free private repo啊……
    clino
        24
    clino  
       May 30, 2014
    自己用gerrit搭一个git服务,然后强制每人的提交都要别人review过再合并
    anheiyouxia
        25
    anheiyouxia  
       May 30, 2014 via Android
    没用过git,但是我觉得svn是非常简单的工具,如果觉得搭建麻烦或者不会搭建,那直接在Googlecode创建一个项目,名字就用乱一点的名字,基本不用担心泄露的问题。
    然后既然是用eclipse,装上插件后,每次写之前update一下,写完代码一commit就是了,有冲突,手动解决一下。
    Mutoo
        26
    Mutoo  
       May 30, 2014
    最好的 java ide,自带超好用 git/svn 集成,小白值得拥有。
    http://www.jetbrains.com/idea/

    社区版免费。
    leopanhf
        27
    leopanhf  
       May 30, 2014
    很显然你们完全都没有沟通啊。跟工具没关系吧。
    FatGhosta
        28
    FatGhosta  
       May 30, 2014
    eclipse上有egit,但是如果对git操作不熟悉,用egit也是坑。
    @fireking
    wizardoz
        29
    wizardoz  
       May 30, 2014
    同意一楼说法,你的队友不仅是不熟悉工具。而是完全不理解版本控制为何物。有必要先开个会沟通一下,大家分享一下对版本控制的看法以及使用技巧。工欲善其事,必先利其器。
    hualuogeng
        30
    hualuogeng  
       May 30, 2014
    楼主缺的是一本适合GIT入门的书
    kooyou
        31
    kooyou  
       May 30, 2014
    楼主不是本科生?主要还是没沟通吧。。。
    wudoo59
        32
    wudoo59  
       May 30, 2014
    我想问大家git都是到哪里学的,还是直接官方网站看帮组内容啊。
    Panic
        33
    Panic  
       May 30, 2014
    一上来就多人协作使用git何必呢, 我现在也只在自己个人项目里试试git,公司多人还是使用svn, 你不搞多分支的话肯定够了。 使用git只能看起来高大上了
    lincanbin
        34
    lincanbin  
       May 30, 2014
    @yukirock GUI比Shell好很多,你如果要教他们的话,两三分钟教会Sync、Commit、Push这几个基本操作,问题不大。
    kaneg
        35
    kaneg  
       Jun 2, 2014
    Git就不是给菜鸟用的。几个人的小团队用SVN是在合适不过的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2844 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 99ms · UTC 14:25 · PVG 22:25 · LAX 07:25 · JFK 10:25
    ♥ Do have faith in what you're doing.