2010-03-31 150 views
0

我想知道什么时候应该使用svn中的提交,更新和合并命令。在svn提交/更新/合并命令

我检出项目并更改了代码后,我应该使用更新,提交还是合并来保持同步?

纠正我,如果我错了:

更新=在回购所有的变化被复制到您的本地项目。

commit =您的本地项目中的所有更改都被复制到回购站。

合并=与上面相同,但您确定方向?

我什么时候使用上面的每个命令?

+0

设置颠覆是我们的工作。使用它属于www.stackoverflow.com(不必担心,我们会将您的问题转移给您) – 2010-03-31 22:49:36

+0

服务器故障适用于系统管理员和IT专业人员,以专业人员身份管理或维护计算机的人员。你的问题更多与软件开发有关。请参阅http://stackoverflow.com/questions/tagged?tagnames=version-control&sort=votes – Zoredache 2010-03-31 22:49:52

+2

除了错误的地方,这个问题不应该被要求。如果你甚至不打算阅读关于这个主题的许多快速入门指南中的至少一个,你怎么能认真地期望能够使用版本控制软件(或其他任何东西)? – 2010-04-01 00:04:27

回答

3

我从SVN Book引用:

典型的工作周期是这样的:

更新你的工作副本。这涉及到使用svn update 命令。

进行更改。您将对现有文件的内容编辑 最常见的更改。但有时你需要添加, 删除,复制和移动文件和目录,在SVN加SVN删除SVN复制,并SVN移动命令处理工作中的各种结构 变化复制。

审查你的修改svn状态svn diff命令是至关重要的 审查您在您的工作副本中所做的更改。

修复你的错误。没有人是完美的,所以当你审查你的修改时,你可能会发现一些不太正确的东西。有时候,修复错误最简单的方法是从头开始重新开始。 svn 还原命令将文件或目录恢复到其未修改状态。

解决冲突(合并其他人的更改)。您需要花费 来制作和查看您的更改,其他人可能已经发布并且发布了更改 。您需要将他们的更改整合到 您的工作副本中,以避免当您尝试发布自己的副本时潜在的过期情况 。同样,svn update命令是 这样做的方法。如果这会导致本地冲突,则需要 解决那些使用svn resolve命令。

发布(提交)您的更改svn commit命令会将您的 更改发送到存储库,如果它们被接受,它们将创建您修改的所有内容的最新版本。现在其他人也可以看到你的工作 !

+2

这不解释何时使用合并。 – masterxilo 2014-05-23 08:45:40

2

让我们来看看如何“更新”和“合并”是不同的:

假设一个仓库X的修订历史是这样的:

...->2707->2708->2709->2710->2711 

2711的最新版本号X. 可能存在介于版本2708和2711之间的错误。您知道该错误在修订版2707中不存在。它可能已在2708,2709,2710或2711处引入。基本上,您有兴趣知道哪个提交引入了错误。

一种做事的方法是在每个修订版本号上返回(回滚)本地存储库中的更改,并检查错误是否仍然存在。假设说,错误是在2709版本你可以用folllowing命令来执行回滚提交的介绍:

$ svn update -r 2710 

的错误依然存在......

$ svn update -r 2709 

的错误依然存在..

$ svn update -r 2708 

该错误不存在。这意味着修订版2709导致了该错误。

但是,你同样可以做到,

$ svn merge -r 2711:2708 

两者之间唯一的区别是,SVN更新,如果有局部变化将提高的标志,让你知道。您可以接受这些更改或恢复,以便在运行svn diff时不会有任何更改。另一方面,svn merge可以解决本地副本和存储库之间的差异。明智的做法是他们仍然会做同样的事情,但他们只在这里表现出行为差异。