在开始使用Git之前,我应该了解些什么?
我已经使用"传统"版本控制系统来维护过去项目的源代码存储库。我正在与一个分布式团队一起开始一个新项目,我可以看到使用分布式系统的优势。鉴于我了解SourceSafe,CVS和Subversion;我们对Git新手有什么建议?
解决方案
Git SVN速成课程是一本很好的入门书籍。
在提交文件之前,必须每次将它们添加到Git暂存区域。为了使它更容易,有一个-a选项来添加所有跟踪的文件,如git commit -a一样。
另外,当我们执行git diff时,它仅向我们显示工作副本与登台区域中的内容之间的差异。如果我们已将更改的文件添加到暂存区,则即使我们未提交更改," git diff"也可能不会报告任何内容。使用git status
来确定。
做教程
然后玩一下。在开始使用主要代码库之前,请做一个小小的玩具项目来感受一下。
我经常使用gitk来查看补丁,并跟踪代码如何从提交更改为提交。
我在公司尝试过git。
我们使用了CVS,并希望转向更好的VC工具。
我们选择git作为文件版本控制的最佳工具(GIT上的Linus)。
它的性能是最好的,对于深入了解版本控制的开发人员来说,它确实是一个很棒的工具,但对于那些在后台使用版本控制并且不想学习如何使用它的普通开发人员来说,这是一场噩梦几个小时(他们确实需要学习很多东西)
而且,它与现有IDE的集成距离完善还很遥远。
对于常规开发人员而言,整个可用性是一个很大的问题。
在与4个开发人员进行了试验之后,我们将Subversion转换为最简单的工具,尽管不是那么出色。
还有Subversion MultiSite的商业解决方案(我们还没有尝试过,但很快就会尝试使用)WANDisco
从我从Subversion过渡到Git的经验中,最重要的不是我们需要学习什么,而是需要学习的东西。分布式版本控制与集中版本控制有很大不同。 CVC是DVC的子集,因此我们只能在DVC工具中进行CVC,但是它将比使用CVC工具更为复杂。
尝试取消学习CVC,并掌握DVC的心态。如果我们最终只是在DVC工具中执行CVC,我们只会对所有增加的复杂性感到沮丧,并且我们将不会意识到这种增加的复杂性会给我们带来灵活性。
所有DVC工具都对分支和合并提供了非常强大的支持。用它。所有历史记录都唾手可得。用它。 (例如:从不注释代码,只需将其删除即可。即使在没有互联网连接的飞机上,我们也可以始终将其取回。)
Git的一个非常重要的方面:所有其他工具都具有或者多或者少定义的工作流程。 Git没有。 Git是DVCS工作流程构建套件。这有时使我们很难知道该怎么做:我们必须设计和实现自己的工作流程(提示:使用大量的Shell脚本)。我使用Git已有一年多了,但我仍然没有完全弄清我的工作流程。