gpt4 book ai didi

svn - 存储库(SVN、GIT)如何工作?

转载 作者:行者123 更新时间:2023-12-04 13:25:01 25 4
gpt4 key购买 nike

我几乎每天都阅读 SO 并且大部分都有关于源代码控制的线程。我有几个问题。我将以 SVN 为例。

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

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

3) 什么是分支?

谢谢,如果有人知道外行术语pdf或解释它的东西,那就太棒了。

最佳答案

1)假设有一个中央仓库(SVN和CVS都是这种情况,但不一定是Git、Bazaar、Mercurial等),A人提交(然后push提交,它只是传输diff和提交消息到中央存储库),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 , EF不包含在该特定分支中。它可以重写为:
feature-> A-B-R-S-T
master-> A-B-C-D-E-F
bugfix-> A-B-C-J-K-L-M

现在,分支对于将工作流划分为不同的部分非常重要,并将工作重点放在特定部分上。想象分支 master是稳定代码所在的位置,假设我们正在分支 feature 上实现一个新功能,尚未准备好发布。现在想象一下插件系统发生了变化,重要的错误修正被提交到 master分支,并且,因为我正在实现的功能依赖于插件系统,所以我需要将这些提交( CF)转移到分支 feature .为此,您发出 rebase (我在这里使用 Git 作为指南)向您的 SCM 软件发送命令,以便:
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

关于svn - 存储库(SVN、GIT)如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com