当前位置:  开发笔记 > 开发工具 > 正文

repos(SVN,GIT)如何工作?

如何解决《repos(SVN,GIT)如何工作?》经验,为你挑选了2个好方法。

我几乎每天阅读SO,大多数都有关于源代码控制的帖子.我有几个问题.我将以SVN为例.

1)有一个团队(小的,大的dosnt问题).在早上,每个人都会检查代码以开始工作.中午A人提交,而B人仍在工作.B人提交时会发生什么?B人将如何知道有更新的文件?

2)我假设第一个问题的答案是"运行一个告诉你的更新命令",好的,所以B人发现他们整个早上一直在工作的文件发生了变化.当他们看到udpated文件时,似乎人A已经重新编写该文件以获得更好的性能.B人做什么?好像整天都浪费时间.或者,如果他们提交他们的版本,那么浪费A人的时间?

3)什么是分支?

谢谢,如果有人知道一个外行人的术语pdf或解释它的东西会很棒.



1> Pierre-Antoi..:

1 && 2)
SVN:当B尝试提交时,会出现错误,表明他没有最新版本的代码.他需要做一个svn update并合并A人所做的改变和他自己的改变.请参见如何解决SVN冲突.

GIT:因为你有自己的本地存储库,所以你可以自由提交.当您将git push更改推送到必须合并的远程存储库时.请参阅解决GIT中的合并冲突

3)分支维基页面



2> moatPylon..:

1)假设有一个中央存储库(SVN和CVS的情况,但不一定是Git,Bazaar,Mercurial等),并且人A提交(然后推送提交,它只传输差异并提交消息到中央存储库),B人员应该手动更新它的副本.

2)在这种情况下,是的,有人会浪费时间.SCM系统(源代码管理)无法通过组织问题来解决团队问题.这当然是极端的情况.大多数情况下,每次提交只会有微小的差异(这里的次要定义是任何特定文件不应该被完全或部分重写),如果这些修改没有触及B正在处理的部分, SCM软件将能够将这些提交组合成一个工作文件.

另一种情况是两个人改变同一文件的相同区域(比如一个函数).当发生这种冲突时,SCM软件将帮助您选择您将使用哪些更改,甚至让您同时使用这两种更改.

3)分支是提交历史记录行:

feature->    /R-S-T
master->  A-B-C-D-E-F
bugfix->       \J-K-L-M

这里feature,masterbugfix是树枝,信件是具体的提交.对于分支master,最新的提交(每个文件的最新版本)是F.另一方面,分支feature的最新提交是T ,它只包括提交AB分支master.在提交所做的任何更改C,D,E并且F不包括在该特定分支.它可以改写为:

feature-> A-B-R-S-T
master->  A-B-C-D-E-F
bugfix->  A-B-C-J-K-L-M

现在,分支对于将工作流划分为不同的隔离区非常重要,并将工作重点放在特定部分上.想象分支master是稳定代码所在的位置,想象一下我们正在分支上实现一个新功能feature,该功能尚未准备好发布.现在假设插件系统已经改变,重要的错误修正被提交到master分支,并且,因为我正在实现的功能依赖于插件系统,我需要将这些提交(C通过F)转移到分支feature.为此,您rebase向SCM软件发出一个(我在这里使用Git作为指导)命令,以便:

feature->            /R-S-T
master->  A-B-C-D-E-F
bugfix->       \J-K-L-M

所以现在你已经完成了分支机构的所有工作feature.为了转移提交R,STmaster你发出merge命令:

master->  A-B-C-D-E-F-R-S-T
bugfix->       \J-K-L-M

这是分支基础知识.你可以对分支机构做很多其他很酷的事情.希望不会太长并且有所帮助:P

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有