[牢骚加请教]温故而知故,关于git

2014-02-11 02:10:44 +08:00
 arbipher
感觉什么东西学得都不透彻,几天不碰又忘了。就算刚学过的东西,用的时候还是脱离不了Google、StackOverflow
git也是学了忘、忘了学。总是温故而知故,太伤感了。问题在哪呢?是因为从来没学好过,还是用少了?

这几天把Pro git看了下。画了张图,连不断理还乱。

http://imglf0.ph.126.net/j65-Guzksy-HuHU__djchg==/1835216848253602443.jpg

请教版上各位大神,这些指令都常用吗?Pro git上还看到诸如“commit之后又想把修改添加到这次commit”“把一个commit拆分成两个commit”,这些功能有什么实用价值吗?能不能略过。。。
5281 次点击
所在节点    程序员
30 条回复
zeyexe
2014-02-11 03:58:48 +08:00
恕我问句题外话,你用什么工具画的图?
vibbow
2014-02-11 05:38:13 +08:00
直接用SourceTree,基本一条git命令都不会...
wwqgtxx
2014-02-11 07:28:12 +08:00
简单命令用命令行,复杂的用git gui
常用的直接写进批处理文件
我就是这么干的
alexrezit
2014-02-11 07:29:13 +08:00
为什么质疑实用价值?
FrankFang128
2014-02-11 08:38:36 +08:00
当然可以略过。
hkongm
2014-02-11 08:44:17 +08:00
2楼真理!同样用ST中
jianghu52
2014-02-11 08:46:27 +08:00
git svn这样的东西,我都是现用现查的,最常用的也就那么不到10个命令,一个版本工具,还准备上升到什么地步,有这功夫提升代码质量多好。多想想怎么重构代码是真的。
est
2014-02-11 08:56:37 +08:00
> commit”“把一个commit拆分成两个commit”,这些功能有什么实用价值吗?能不能略过。。。

有的。本地分支可能比较混乱,但是大规模项目,你需要把revision弄得漂亮一点。不要到处都是typo, fix, update这种口水commit。可能越下游颗粒度越细,越到上游就是一个完整功能+测试一个commit了。

还有这种模型:

一个大型项目,多个开发者的commit到一个功能模块的repo,然后功能模块作为单一contributor一次性提交到全局mainline。
FatGhosta
2014-02-11 09:48:24 +08:00
有时候你一次commit,提交了两个功能就需要合并一个。或者多次提交只实现了一个功能,那就需要合成一个。
这种提交利于审核,以及必要时候的cherrypick
lingyired
2014-02-11 09:58:11 +08:00
该图已被屏蔽- -
FatGhosta
2014-02-11 10:00:00 +08:00
@vibbow 这个工具这么神奇。。。
arbipher
2014-02-11 10:40:16 +08:00
@zeyexe OmniGraffle (mac)
arbipher
2014-02-11 10:47:52 +08:00
@vibbow 我来试用一发
oldcai
2014-02-11 11:41:15 +08:00
@est typo, fix, update,哈,高命中率的一击啊,我刚用git的时候基本上就是这三个,外加第一个init。。。

@arbipher 图片很清晰,楼主梳理的很好嘛。
lazywen
2014-02-11 12:41:35 +08:00
@jianghu52 除非你是一个人单干,不然等着哭吧
kneep
2014-02-11 18:19:04 +08:00
非常实用,这正是svn之类的工具缺的。
一个好的commit,必须同时具有以下两个特征:
1. 一个commit只解决一个问题
2. 一个commit包含解决这个问题需要的所有修改
kneep
2014-02-11 18:24:43 +08:00
再说一下为什么要这么做:
1. 逻辑清晰,赏心悦目,也方便patch的展示,传递
2. 便于回退查找问题,你可以看看git bisect是干什么的
3. 便于持续集成,自动化测试,达到这样的效果:一个commit进去,一份自动化测试报告出来
jason52
2014-02-11 21:23:20 +08:00
OmniGraffle好啊 pro git里面的图也是OmniGraffle画的。windows下面没有类似工具呀。。
blacktulip
2014-02-12 03:01:46 +08:00
@jason52 Microsoft Visio
lightening
2014-02-12 03:33:39 +08:00
实用价值还是比较大的。
由于我们的项目有很多 branch,我们经常需要 cherry-pick 一个分支的 commits 到另一个分支。这种情况下,每次提交时我们必须做到 atomic commit,每个 commit 仅包含一个功能。这时候拆解就很重要。

另外,我们不提倡在代码中写注释。所有要评论的东西统一放在 git 的 commit message 里(第二行可以写很多)。在别人不理解你的代码时,blame 一下就知道你当时做这个修改是为了什么。因此,commit 的组织就显得尤其重要。这样做的好处是防止有人更新了代码却又忘了更新注释,导致注释和代码不匹配的情况。

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

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

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

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

© 2021 V2EX