Kie*_*eli 41 git version-control
我现在正在使用SVN,过去我曾使用过CVS和VSS.SVN是我书中最喜欢的,但我听说过很多关于git的内容.使用git的人中,你的经历有哪些优点和缺点?
Jon*_*eet 29
我对git 没有很多经验,但是:
优点:
(除了能够拥有本地存储库并推送到公共存储库之外,我还没有真正"需要"事物的分布式方面.)
缺点:
git add)需要一段时间才能掌握小智 19
命令数量
虽然svn和其他现代VCS(如hg或其他)是很好且有用的工具,但git是一个装满机床的商店.这同时兼顾了pro和con.虽然svn有30个命令(根据'svn help'),git会发布130个手册页,每个手册页或多或少都描述一个命令.其中一个原因是git暴露了大多数用户作为命令行工具所需的低级功能.但是,即使没有那些低级命令,git也会提供许多非常强大的工具,并且在我所知道的任何其他VCS中都找不到(参见git-bisect,git-filter-branch,git-cherry或git-reset)举些例子).虽然掌握这些工具非常有帮助,但是初学者很难理解他们需要知道哪些命令,哪些命令不需要知道.
发展模式
类似的话题是git足以支持非常不同的操作模式.这使得初学者很难,因为没有真正的"最佳实践"文档,因为最佳实践不是构建到git中.所以你必须自己决定你是否
由于您拥有本地存储库,您甚至可以使用与您正在处理的项目完全不同的操作模式,并在推送/发布它们之前调整更改集.
变化的路径
根据您的观点,另一个也算作pro和con的事情是使用git比使用任何集中式VCS更复杂,甚至更复杂的大多数其他分布式VCS.
使用集中式VCS,您通常只需执行提交,并且您所做的更改将转到存储库.在git中,更改可以在最终到达最终目标之前经过大量步骤.典型的步骤是(括号中不常见的步骤):
您可以跳过索引,至少涉及2个步骤,但通常还有更多步骤.这需要更深入地了解您正在做什么并输入更多命令.另一方面,这使您可以控制每个步骤.您可以
所有这些能力和决定使初学者难以开始使用git.一旦掌握,他们就可以对代码进行巨大的控制.
写入权限
任何分布式VCS的一个主要专业人员是贡献者不需要写访问权来从VCS中受益.每个具有读访问权限的人都可以克隆存储库,在必要时创建分支并开始堆叠放置补丁集.在没有写访问权限的情况下使用cvs真的很痛苦 - 使用git,如何获得补丁并没有太大的不同.这不仅是技术优势,而且还可以节省复杂的讨论,无论这个noobie是否应该真正获得写访问权限.
Bin*_*V A 11
优点:
缺点:
Bom*_*mbe 10
很多人会否认这一点,但源代码管理工具的选择会影响你的工作方式.我过去常常使用Subversion工作 - 直到我为我发现了Git.我主要避免在Subversion中进行分支.每当我无法避免它时,我更喜欢设置一个本地镜像(使用svk).虽然在Subversion和Git中都可以轻松完成分支,但只有Git才能使合并(和变形!)变得有趣,Subversion在合并时间方面一直是一个巨大的痛苦.
我非常喜欢Git的第二件事(除了已经提到的所有要点之外)是"索引",一个保存下一次提交的暂存区域,以及只能将更改文件的单个块添加到其中的可能性.
小智 5
使用git与使用其他版本控制系统非常不同.
拥有本地存储库非常重要.这意味着您可以使用版本控制系统的全部功能(这对git来说很多)而不会打扰任何人.如果您的项目中存在争议性问题,您可以私下处理它 - 通过创建分支,堆叠补丁和抛光它们.这样你就可以带着熨平的补丁套装回来.但即使在"正常操作"中,如果你可以在向公众展示补丁之前清理你的补丁要好得多,事实上,如果你有健全的补丁而不仅仅是"一天结束"快照,调试会更容易.
在我提交更大的补丁之前,我通常会对补丁进行重新排序,并将我的新代码上的错误修正直接导入补丁.所以补丁看起来像我从未犯过任何错误.之后,我的私人分支在HEAD之上重新定位然后被推送.我通常从不使用合并,因为它只会使历史变得混乱.
简而言之:它可以保持您的历史清洁.
这使您对工作有了截然不同的看法.它允许您将当前状态视为添加单个修补程序,这些修补程序创建的历史记录不仅仅是日志,而是您有意添加的内容.补丁集是您构建应用程序的砖块 - 并在必要时移动到正确的位置.
我永远不会自愿回到我在git或任何不支持rebase和本地分支和提交的版本控制系统之前使用的任何其他版本控制系统.
| 归档时间: |
|
| 查看次数: |
18896 次 |
| 最近记录: |