由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 回复一下关于Git的讨论(原帖竟然不能回复了?岂有此理!)
相关主题
很多公司用github做source control么?跟屎一样面sys admin问啥问题呀?
没有天理,我的google面试跟大家都不一样某国内视频公司湾区招聘Sr.Software Engineer(back-end).
为什么都喜欢用Git?visual sourcesafe感觉跟屎一样
这个妹子还是很牛的有人用过Perforce吗?
求助:如何删除已经merge到master上的文件?.Net Job opportunity at Auburn Hill Detroit
这种广告是绿卡广告吗?看一遍都浪费时间啊湾区硅谷工作机会 -- Application Enginner
找不到实习怎么办?looking for .NET/SQL developer position
Embedded Developer needed (Contract)International Project Engineer (IPE) opening (Redmond, WA)
相关话题的讨论汇总
话题: git话题: commit话题: svn话题: branch话题: 版本控制
进入JobHunting版参与讨论
1 (共1页)
g*****1
发帖数: 173
1
原帖地址:http://www.mitbbs.com/article_t1/JobHunting/32723821_0_6.html
没想到这个帖子这么火。由于本人工作的公司最近也在考虑CVS转到git,我也负责写了
一些相关的文档。在写文档的过程中也仔细考虑过一些帖子里讨论的问题,因为毕竟要
说服一个用了CVS 10几年的人转到Git并不是一件容易的事情。所以在此也谈谈个人的
看法。
个人认为帖子里很多人的观点还集中在版本控制本身的功能身上,其实,在这点上几乎
所有的版本控制工具功能都是大同小异的,无外乎checkout, branch, merge, tag,
commit之类。而大多数人都忽略的是不同的版本控制工具带来的工作流(work flow)
上的变化。
想必很多人都用过Centralized的版本控制工具,和你们一样我也是从SVN和CVS起步的
。我觉得这类VCS最大的问题是branching 和merging,当时我们的project都是尽量避
免这些操作。而且我们每天也commit有限的次数(每天下班之前我们头总会提醒我们
commit 当天的code),这样导致的一个直接问题是很多中间版本的丢失。比如如果我
们发现commit的code有问题(有人说commit之前local test呀,可是别忘了我们不是一
个人在战斗!代码只有集合到一起才能test的啊!),怎么办??这是很让人头痛的问
题。相对于centralized的VCS,git带来最大的变化就是使得branching和merging变得
非常非常简单和cheap。而且由于是版本树就在本地,对server也没有什么影响,其实
说到底,git带来的最大的变化不是它增加了什么新的功能,而是这种对branching和
merging等操作的改进直接导致版本控制工作流的变化。比如我们可以随时随便随地
commit,branch和merge而不用考虑别人和server的感受。不同branch甚至commit/tag
之间的切换我认为是最惬意的事情了!当然,如果你说CVS和SVN也可以做到,我还是真
诚地希望你比较一下他们之间的差异再做评论。
后记:IT是当下更新换代最快的行业,这要求我们用open的眼光来看待新的技术,否则
我们很快就out了,你觉得呢?
g*****1
发帖数: 173
2
另外推荐大家看看这个关于git work flow的帖子:http://nvie.com/posts/a-successful-git-branching-model/
R******9
发帖数: 267
3
太赞了,正想学习这方面的

【在 g*****1 的大作中提到】
: 另外推荐大家看看这个关于git work flow的帖子:http://nvie.com/posts/a-successful-git-branching-model/
m********e
发帖数: 118
4
楼主写的挺好…mark下
Y******u
发帖数: 1912
5
非IT公司,从cvs转git,算上gitlab,工作效率提高一倍有余吧
p**********e
发帖数: 316
6
所有的工具都是大同小异,只是这个不太好用,那个更好用的问题。作为developer,
你就只管checkin, checkout就行了, 其他的功能偶尔用一下而已

【在 g*****1 的大作中提到】
: 原帖地址:http://www.mitbbs.com/article_t1/JobHunting/32723821_0_6.html
: 没想到这个帖子这么火。由于本人工作的公司最近也在考虑CVS转到git,我也负责写了
: 一些相关的文档。在写文档的过程中也仔细考虑过一些帖子里讨论的问题,因为毕竟要
: 说服一个用了CVS 10几年的人转到Git并不是一件容易的事情。所以在此也谈谈个人的
: 看法。
: 个人认为帖子里很多人的观点还集中在版本控制本身的功能身上,其实,在这点上几乎
: 所有的版本控制工具功能都是大同小异的,无外乎checkout, branch, merge, tag,
: commit之类。而大多数人都忽略的是不同的版本控制工具带来的工作流(work flow)
: 上的变化。
: 想必很多人都用过Centralized的版本控制工具,和你们一样我也是从SVN和CVS起步的

z****t
发帖数: 63
7
难变的是习惯不是工具

【在 g*****1 的大作中提到】
: 原帖地址:http://www.mitbbs.com/article_t1/JobHunting/32723821_0_6.html
: 没想到这个帖子这么火。由于本人工作的公司最近也在考虑CVS转到git,我也负责写了
: 一些相关的文档。在写文档的过程中也仔细考虑过一些帖子里讨论的问题,因为毕竟要
: 说服一个用了CVS 10几年的人转到Git并不是一件容易的事情。所以在此也谈谈个人的
: 看法。
: 个人认为帖子里很多人的观点还集中在版本控制本身的功能身上,其实,在这点上几乎
: 所有的版本控制工具功能都是大同小异的,无外乎checkout, branch, merge, tag,
: commit之类。而大多数人都忽略的是不同的版本控制工具带来的工作流(work flow)
: 上的变化。
: 想必很多人都用过Centralized的版本控制工具,和你们一样我也是从SVN和CVS起步的

f******n
发帖数: 314
8
git直接把svn秒成渣。不会用git的代表不愿意学习,知识落伍,直接不需要给面试机
a*****0
发帖数: 6788
9
一直用SVN和TFS,最近用上Git,虽然还不熟觉得这种open source东下载个东西西下载
个东西拼起来很麻烦,不过发现DVCS的概念果然好。其实原来TFS里的shelfing已经有
这个意思了,但还是在server上。 TFS2013也有local repository和local commit,
但俺觉得too little, too late. MSFT还是直接package Git,把TFS的ticketing部分和
client integration做好就是了。 Source control这部分就算了吧。
l******t
发帖数: 55733
10
对Git的理解完全不对
相关主题
这种广告是绿卡广告吗?看一遍都浪费时间啊面sys admin问啥问题呀?
找不到实习怎么办?某国内视频公司湾区招聘Sr.Software Engineer(back-end).
Embedded Developer needed (Contract)visual sourcesafe感觉跟屎一样
进入JobHunting版参与讨论
k*******p
发帖数: 219
11
接触git很久了,入门的时候有点头大,用了这么久其实99%的时候用的以下的命令,
git commit --amend 把当前added 但没commit的内容贴到上个commit里
git rebase -i HEAD^ #N 这个是特别有用的命令,对当前N个commit进行Squash skip
edit等操作整合
git rebase --interactive #commit sha1 跳跃到以前的某个commit进行修改
git branch 创建local新的branch
git reset HEAD^ 这个我很喜欢, 就是把最当前的commit 解散
git checkout -b #remote branch name, checkout branch 到本地
git tag 每次release 最好tag起来以方便随后refer
git reflog 这个是最救命的命令。它显示所有commit过的记录,就算不小心删除了个
branch或者amend 或者rebase搞混乱了,照样可以从这个命令里找到以前的commit id
从而cherry pick 回来
git cherry-pick 把版本库里某个commit给抓过来到当前
git stash 存放未commit的内容
git format-patch 偶尔需要线下share某个commit 给别人可以做个patch 发给别人,
不过大多时候发remote branch, 然后cherry-pick 这个commit可以替代之。
另外一个非常重要的原则就是always commit,因为commit的东西误删除的时候总能再
找回来
这是我的2 cents,不对之处请指正。
至于git和svn哪个好呢,不同人有不同需求吧,对于我个人恐怕是回不到svn了。
A*****i
发帖数: 3587
12
git rebase -i HEAD^ #N 这个是特别有用的命令,对当前N个commit进行Squash skip
edit等操作整合
对于这个我们一般不用rebase很容易出错,应为squash之后要和master force merge稍
有不慎就会把master毁了
我们的做法是
git reset
git stash
git merge --ff
git stash apply
git commit
git push -f
C******8
发帖数: 501
13
写的挺好,不过有点雷声大雨点小 ,没几行就后记了。。。

【在 g*****1 的大作中提到】
: 原帖地址:http://www.mitbbs.com/article_t1/JobHunting/32723821_0_6.html
: 没想到这个帖子这么火。由于本人工作的公司最近也在考虑CVS转到git,我也负责写了
: 一些相关的文档。在写文档的过程中也仔细考虑过一些帖子里讨论的问题,因为毕竟要
: 说服一个用了CVS 10几年的人转到Git并不是一件容易的事情。所以在此也谈谈个人的
: 看法。
: 个人认为帖子里很多人的观点还集中在版本控制本身的功能身上,其实,在这点上几乎
: 所有的版本控制工具功能都是大同小异的,无外乎checkout, branch, merge, tag,
: commit之类。而大多数人都忽略的是不同的版本控制工具带来的工作流(work flow)
: 上的变化。
: 想必很多人都用过Centralized的版本控制工具,和你们一样我也是从SVN和CVS起步的

q*c
发帖数: 9453
14
开什么玩笑,世界上哪里来的 silver bullet. 提高一倍效率,抽大麻呢,呵呵。
git 的 push 就等于别人的 chck in. 楼主那种直接 work on master 本来就不对。
你自己开个 feature branch 想 check in, comit 多频繁都可以。
多人协调,最后的 merge, conflict 各种系统面临完全一样的问题,理论上只能手动
,没有别的办法, 这是物质守恒定律保证的。

【在 Y******u 的大作中提到】
: 非IT公司,从cvs转git,算上gitlab,工作效率提高一倍有余吧
q*c
发帖数: 9453
15
这两个我用的都很熟,你太搞笑,武断,狭隘了。

【在 f******n 的大作中提到】
: git直接把svn秒成渣。不会用git的代表不愿意学习,知识落伍,直接不需要给面试机
: 会

l*****s
发帖数: 672
16
git还是有大问题的,就是module的问题,不知道这个sparse checkout
是不是能够部分实现这个问题了。
git的优势在integrity带来的种种好处,缺点也在integrity带来的module
共享的局限性。
如果真要选的话,还是会选择git.
不过现在用perforce
l*****s
发帖数: 672
17
另外一个关于git的问题,不知道是不是个实际问题,大家都在local的repo干活,
最后测试没有问题后提交给remote,这个导致以后remote的check in 太大块,
这样历史纪录就会差很多。我是比较喜欢那种一点一点check in的。
z****e
发帖数: 54598
18
cvs还是不要拿出来当例子了
真的是不行,不是一个时代的
我对git没有太多偏见,快是好事
但是动不动就有人说git能提高开发效率几倍
这就是纯粹扯蛋了,能提高10%就不错了
除非你告诉大多数时间你都在搞vcs这种扯蛋的事
工作中除了写代码,看代码,测试,debug
真正用在vcs上的时间,都不应该太多
以前主要是code base太大,所以经常导致co太慢
半个小时甚至半天才co完成,然后无数的conflicts,主要是lib的order导致的
然后被这种东西折磨得晕过去,主要常见于各种legacy code/system
对付这种也不仅仅是只能通过改良vcs就可以搞定的
很多时候依赖的是maven/gradle这种类库管理工具,而非vcs
这就是那个id说的本意,同时他也强调了对模块提高内聚和减少耦合
这都是软件工程的核心思想,只要做到了这两步
其实你不用git也不会有什么太大问题,因为这两步把codebase减小
并干掉各种dependency,这样co自然就快了
以前要co所有的prj,现在只要co一个module就好了,这样就快了
从构架层面思考,这无疑是正确的而且应该这么做
wwzz他们说的是另外一种情况,就是假设每次都co整个prj
那么git可以在短时间内co整个prj出来,而svn因为codebase会随着分支增加而增加
所以co整个prj出来会比较慢,这个时候用git就会有好处,简单说就快
但是从整体结构上说,你把整个公司所有的code让一个程序员全部co出来
会不会有问题,那这个很难说的,南翔技校为啥出名?
还不就是google说tg有个内奸偷了内部代码么
那还不是自身政策就允许的?这种情况就不会发生在上一种情况中
上一种情况所有modules之间都是割裂隔绝的,安全性就要强一点
搞it的原教旨主义者太多,vcs这种东西甚至it核心都算不上
面试谁问这个?从来没遇到过,不懂找着抄一下就懂了
又不是什么火星科技
l*****s
发帖数: 672
19
好坏不要争,前面我对git的问题能不能说一下
o*******0
发帖数: 699
20
Mark
相关主题
有人用过Perforce吗?looking for .NET/SQL developer position
.Net Job opportunity at Auburn Hill DetroitInternational Project Engineer (IPE) opening (Redmond, WA)
湾区硅谷工作机会 -- Application Enginner招人啦-Sr. Principal Software Development Engineer
进入JobHunting版参与讨论
k********4
发帖数: 858
21

顶,程序架构最重要,其他都tm扯淡

【在 z****e 的大作中提到】
: cvs还是不要拿出来当例子了
: 真的是不行,不是一个时代的
: 我对git没有太多偏见,快是好事
: 但是动不动就有人说git能提高开发效率几倍
: 这就是纯粹扯蛋了,能提高10%就不错了
: 除非你告诉大多数时间你都在搞vcs这种扯蛋的事
: 工作中除了写代码,看代码,测试,debug
: 真正用在vcs上的时间,都不应该太多
: 以前主要是code base太大,所以经常导致co太慢
: 半个小时甚至半天才co完成,然后无数的conflicts,主要是lib的order导致的

z*****m
发帖数: 119
22
单一项目的,不做continuous delivery的,SVN足够了。多项目持续集成的,没有Git
还真的很痛苦。基本上没法保证trunk的稳定。
h********o
发帖数: 484
23
git提高生产效率n倍,扯。刚接触是我看是降效率。git有learner curve,尤其svn用
惯了。
其实基本大伙都能干,高级阶段是对source code management strategy的理解, 这个
理解透了,svn都能解决,只是有时不如git方便。
g*****g
发帖数: 34805
24
There's no holy grail, but git is a big improvement over SVN, period.
g***l
发帖数: 2753
25
同意这个。我是个人,开源的用git,主要是branch方便。公司里面用perforce。
perforce主要是不支持local branch,但是有个shelve的功能非常方便。 对于有冲突
的merge,还是perforce好用,git的gui界面太烂了,更不用提命令行的merge了。

【在 q*c 的大作中提到】
: 开什么玩笑,世界上哪里来的 silver bullet. 提高一倍效率,抽大麻呢,呵呵。
: git 的 push 就等于别人的 chck in. 楼主那种直接 work on master 本来就不对。
: 你自己开个 feature branch 想 check in, comit 多频繁都可以。
: 多人协调,最后的 merge, conflict 各种系统面临完全一样的问题,理论上只能手动
: ,没有别的办法, 这是物质守恒定律保证的。

t****d
发帖数: 488
26
我觉得git的却比较好,只不过呢对于很多人,比较懒,难得改习惯。毕竟csv已经用习
惯了,而git呢还需要花上好几个小时去学一下。比如我就是因为懒了这几个小时过了
几个月才真正的转成git的。
i********e
发帖数: 546
27
mark
h*******t
发帖数: 2679
28
你连merge和diff都没提。这是git的强项。
你说的这些都跟svn差不多。
git和svn非常大的区别是工作流程不同。
要分清
master,
development,
feature branches,
hot fix branches.
git主要还是learning curve。我被赵策他们公司去年逼着从svn换到git,也头大了好
几个月,刚开始用git的时候,总有种便秘的感觉。习惯了git后,反而觉得svn没意思
。git还是要用命令行更方便。

skip

【在 k*******p 的大作中提到】
: 接触git很久了,入门的时候有点头大,用了这么久其实99%的时候用的以下的命令,
: git commit --amend 把当前added 但没commit的内容贴到上个commit里
: git rebase -i HEAD^ #N 这个是特别有用的命令,对当前N个commit进行Squash skip
: edit等操作整合
: git rebase --interactive #commit sha1 跳跃到以前的某个commit进行修改
: git branch 创建local新的branch
: git reset HEAD^ 这个我很喜欢, 就是把最当前的commit 解散
: git checkout -b #remote branch name, checkout branch 到本地
: git tag 每次release 最好tag起来以方便随后refer
: git reflog 这个是最救命的命令。它显示所有commit过的记录,就算不小心删除了个

h*******t
发帖数: 2679
29
TFS太烂。跟SS一个档次的。
一个主要运行在服务器上的软件,对客户端的兼容跟shi一样。

【在 a*****0 的大作中提到】
: 一直用SVN和TFS,最近用上Git,虽然还不熟觉得这种open source东下载个东西西下载
: 个东西拼起来很麻烦,不过发现DVCS的概念果然好。其实原来TFS里的shelfing已经有
: 这个意思了,但还是在server上。 TFS2013也有local repository和local commit,
: 但俺觉得too little, too late. MSFT还是直接package Git,把TFS的ticketing部分和
: client integration做好就是了。 Source control这部分就算了吧。

h*******t
发帖数: 2679
30
"git mergetool"

【在 g***l 的大作中提到】
: 同意这个。我是个人,开源的用git,主要是branch方便。公司里面用perforce。
: perforce主要是不支持local branch,但是有个shelve的功能非常方便。 对于有冲突
: 的merge,还是perforce好用,git的gui界面太烂了,更不用提命令行的merge了。

相关主题
休斯顿石油服务公司Software Engineer职位没有天理,我的google面试跟大家都不一样
Web Development电话面试经验分享与请教为什么都喜欢用Git?
很多公司用github做source control么?跟屎一样这个妹子还是很牛的
进入JobHunting版参与讨论
C*****n
发帖数: 1049
31
windows下装个tortoisegit、linux下装个rabbitvcs保管傻瓜也能入门。人家写小说的
都开始用git了。
A*****i
发帖数: 3587
32
赵策公司是啥?那个做jira的?

【在 h*******t 的大作中提到】
: 你连merge和diff都没提。这是git的强项。
: 你说的这些都跟svn差不多。
: git和svn非常大的区别是工作流程不同。
: 要分清
: master,
: development,
: feature branches,
: hot fix branches.
: git主要还是learning curve。我被赵策他们公司去年逼着从svn换到git,也头大了好
: 几个月,刚开始用git的时候,总有种便秘的感觉。习惯了git后,反而觉得svn没意思

g******o
发帖数: 109
33
可以用sourceTree做git的GUI客户端,管理起来很方便。GIT还是很快的,我碰到的git
最大的问题就是创建了太多的feature branch,一些branch修改相同的文件,最后导致
conflicts.
再有就是每个developer都是在自己的branch工作的,他修改了database的一些东西,
但又不能立刻pull request他的branch code到master, 但恰好他database的改动又影
响了你了,这阵估计就郁闷了
d***s
发帖数: 1062
34
mark
1 (共1页)
进入JobHunting版参与讨论
相关主题
International Project Engineer (IPE) opening (Redmond, WA)求助:如何删除已经merge到master上的文件?
招人啦-Sr. Principal Software Development Engineer这种广告是绿卡广告吗?看一遍都浪费时间啊
休斯顿石油服务公司Software Engineer职位找不到实习怎么办?
Web Development电话面试经验分享与请教Embedded Developer needed (Contract)
很多公司用github做source control么?跟屎一样面sys admin问啥问题呀?
没有天理,我的google面试跟大家都不一样某国内视频公司湾区招聘Sr.Software Engineer(back-end).
为什么都喜欢用Git?visual sourcesafe感觉跟屎一样
这个妹子还是很牛的有人用过Perforce吗?
相关话题的讨论汇总
话题: git话题: commit话题: svn话题: branch话题: 版本控制