...说我查看了一些代码,做了一点点开发或重构或者其他什么......我只是在我完全开心时才重新检查它? ...如果我在编码的时候改变了我的想法怎么办?我可以回到以前的本地版本吗?是否有我当地发展的历史?
是否有关于部署历史记录或开发历史记录的版本控制?
答案 0 :(得分:8)
简短回答。这两者都是。
由于很多原因,您需要能够回滚到早期版本。
答案 1 :(得分:3)
两者,但主要是发展历史。主干不需要一直处于可部署状态 - 这很疯狂。
相反,您提交提交提交,直到您准备好部署。然后,标记/标记/分支您的存储库以指示部署了哪些代码。
答案 2 :(得分:3)
“是否有关于部署历史或开发历史的版本控制?”
两者。
开发人员的修订/文件版本以及部署的分支/标签/标签。
大部分取决于贵组织的政策。
对于本地工作副本和修订版 - 如果您的VCS允许私有工作区/分支机构然后升级或分布式系统,那么检查错误代码并且您可以使用VCS进行操作并不重要所有你想要的私人东西。
对于集中式系统,您可能不希望签入未经测试/无法编译的代码......
再次,这取决于您的组织。
答案 3 :(得分:3)
令人信服的是,还没有人提到使用分支。
树枝是保持树干健康的好方法,同时不断检查你正在做什么,不管是不是坏了。可以把它想象成为代码的新时间表;主时间轴(主干)突然出现并始终有效;分支可以是任何状态而不会影响行李箱。
这可以让你尽早提交,而不必担心你是否搞砸了其他人,并保证你永远不会有一个我已经走得太远而且不可逆转的时刻如果您的本地磁盘应该死,那么在开发一些新的东西时,或者一个哦 - 我已经失去了一周。 (毫无疑问,您的存储库应该存在于经常备份的地方!)
一旦你的代码工作,你可以将分支合并回主干,然后主干现在获得你的新代码;来自主干的新分支现在具有所有正在处理的代码。
git对许多人来说是巨大的吸引力:分支和合并非常容易,只要他们需要,就可以轻松地抛弃新的分支,甚至是分支机构。即使是CVS也可以进行分支和合并,尽管它更加繁琐。
答案 4 :(得分:2)
你应该在任何稳定的时候检查你的工作 - 这将在开发过程中发生许多很多次。
所有源存储库都有一个标签版本 - 您可以使用它来标记最终部署的版本。
主要是开发,但本质上也是如此。
答案 5 :(得分:1)
取决于您,您的团队和工具。 例如,对于集中式版本控制系统,您不应该提交“损坏”或“不完整”的东西,而使用分布式的东西,您可以,如果您这样做,您将获得优势。有关更详细(和有趣)的示例,请参见此处:http://bazaar-vcs.org/Workflows
答案 6 :(得分:1)
我认为正确的答案可能是“它取决于”:)
如果您在生产环境中使用版本控制,那么它就是部署历史记录。如果你在开发中使用它,那就是关于开发历史。如果您在两个地方使用相同的版本控制系统(并非罕见),那么它可能会因分支而异。例如,您有关于开发的主干和功能分支,然后您将这些分支分支到将被放入生产系统的发布分支。发布分支的历史记录显示了部署历史记录。
某些版本控制系统,例如git和mercurial,我认为SVK(一种奇怪的修改后的SVN)允许您拥有本地存储库,您可以从中获取以前的本地版本。 AFAIK,如果您至少没有将更改提交到本地仓库,那么这些都不允许您回滚。 Eclipse还允许您独立于版本控制系统回滚到以前的版本。
答案 7 :(得分:1)
版本控制是关于存储信息的安全性和并发修改。即使使用版本控制软件,您仍需要定义版本和部署单元。没有它,版本控制只提供基本的回滚机制和许多低兴趣和微妙含义的选项。
答案 8 :(得分:1)
这两者之间的差距非常小。但是,如果正确使用版本控制,则它与源控制有关,即开发控制/历史记录。如果使用得当,你经常检查并得到一个很好的版本历史记录,可以用来跟踪你什么时候做什么,时间报告和发生错误时做回退。
简短回答是,两者都正确使用:)
答案 9 :(得分:0)
...说我查看一些代码,做一点点开发或重构或者其他什么......我只是在我完全开心的时候重新检查它吗?
这是个人喜好的问题。当然,您可以签入无法编译的代码或您添加的功能不完整的代码。但访问您的存储库(如果有人)检查不起作用的文件可能会很痛苦。我认为答案很大程度上取决于项目的团队规模和团队的个性。
是否有我当地发展的历史?
取决于您使用的特定源控制系统。 Git允许您跟踪本地更改。
是否有关于部署历史记录或开发历史记录的版本控制?
开发历史,虽然我没有看到阻止您在每次发布时将可部署文件和配置文件检入存储库的原因(但是可能有更好的系统来跟踪此类事情)。
答案 10 :(得分:0)
在重新检入方面,提交时取决于您团队的政策。一些团队使用持续集成工具来确保当前版本的代码编译并通过测试,这意味着您通常不应该提交损坏的代码。在这种情况下,在分支机构工作可以降低工作丢失的风险。
对于本地历史记录,虽然有些IDE会保留自己的本地历史记录,但您无法通过版本控制免费获得此版本。
答案 11 :(得分:0)
Jeff认为你应该Check In Early, Check In Often。然后我订阅了同样的想法。虽然,我这样做的方法是使用我的主干作为我的主要资源库,这是“生产”安全的,而我的分支机构是我开展所有开发的地方。通过这种方式,我可以随时查看所有更改,而无需担心它会投入生产。当我完成特定的增强功能后,我将从该分支合并到主干。
答案 12 :(得分:0)
当您办理登机手续以及办理登机手续时,这绝对是个人选择。有助于确定最佳选择的一些事情是,您是使用中央版本还是分布式版本控制系统,以及是否有团队或个人处理代码。
使用分布式系统,然后你办理登机手续的任何地方都是你本地的,只有你选择推送给他人的是他们所看到的,所以如果你有一棵破树,因为你经常办理登机手续这没关系,而中央存储库你应该检查主干然后通常一个好主意只有签入工作代码。你觉得你应该如何更新你的树和团队中的其他人打破代码,然后你的副本将不再编译。在中央存储库设置中解决此问题的一种简单方法是分支中继代码,使您的更改频繁提交,然后当您感到高兴它正常工作时,您可以将分支合并回主干。通过这种方式,您不会阻止主干始终处于可运行状态,这是保持状态的有用状态。当您向团队添加人员时,这变得更加重要。
关于回到以前的版本,如果已经检入存储库,这不是问题。您可以通过查看提交日志然后使用相关命令返回到特定修订版来返回任意数量的版本。
答案 13 :(得分:-1)
这取决于您的版本控制系统的使用方式......
根据我的经验,大多数公司在大多数情况下都将其用于部署历史记录。也就是说,只应该放入工作代码。如果你检查了一些东西然后正在添加一段尚未起作用的代码 - 然后再检查它意味着有其他人可能会签出破碎的产品。
我遇到过公司使用它的情况,这样你就可以在每天早上检查你的代码,并在你重新检查它的那一天结束时查看你所处的状态。这样,如果其他人想要添加一些东西,可以,无论它目前处于什么状态......虽然我可以在逻辑中看到一些感觉,但这对我不起作用。