使用 XNA 创建游戏 / 编程 / Git 和 Subversion
版本控制系统(也称为修订控制或源代码控制系统)是一种用于跟踪文档和二进制文件更改的软件。它通常用于软件开发中管理源代码文件。对于每次更改,都会保存唯一的 ID、时间戳和更改文件的用户。因此,可以轻松比较两个不同版本之间的更改,以及谁在何时更改了文件。某些系统还提供对特定版本进行注释(以标记更改的内容)或为其提供唯一名称(例如“Beta 1”或“发布候选版本”)的方法。由于保存了所有更改,因此可以回滚或更改到保存的任何版本。这还提供了一种针对恶意或意外更改的保护措施,并在数据丢失的情况下充当备份。
版本控制系统分为三种类型:本地系统、集中式系统和分布式系统。
本地系统仅需要一台计算机。它们最适合单个开发人员,他们希望控制其工作的小型项目。可能每个人都使用过本地系统,即使是无意的。Microsoft Office 或 OpenOffice 等办公软件会在程序崩溃或内存损坏的情况下保存当前打开文件的备份。您可能已经注意到,例如 Microsoft Word 提供在计算机崩溃时打开文件的情况下恢复文件以前版本的功能。为了实现这一点,该程序会每隔几分钟保存当前打开文件的备份,通常对用户隐藏,无论他是否故意保存了他的文档。另一个示例是现代 Microsoft Windows 版本的影射复制服务。它会保存系统文件的副本,以便在文件被损坏或由于错误更新而损坏的情况下进行恢复。
集中式系统使用客户端-服务器架构来跟踪更改。这种类型的系统通常用于跟踪多个文件或整个编程项目。服务器在其硬盘上存储所有文件、文件夹和更改的“官方”副本。这也称为存储库。想要参与开发过程的客户端首先需要获取存储在服务器上的文件。此过程(初始过程以及从服务器进行的任何后续提取)称为“检出”,在此过程中,存储库的整个内容将复制到本地计算机。
现在,客户端可以更改任何他想要更改的文件,例如在项目中添加一些新过程,或改进算法。完成所有更改后,他需要将更改传达给服务器。将更改后的文件上传到服务器称为“提交”。服务器会跟踪客户端对存储库所做的任何更改,并在服务器中添加一个新的“修订”。同样在该项目上工作的其他用户需要将其本地存储库更新到服务器上新提交的版本。如果对文件的更改重叠,则会发生“冲突”。然后,用户有机会查看差异,并根据所使用的版本控制软件选择合并它们。
可以检出已提交到服务器的任何以前版本。
分布式版本控制系统不使用集中式存储库。相反,每个用户都有自己的本地存储库,并且更改通过补丁传达给其他用户。但是,可能有一个公共存储库,每个人都在其中发布其更改(在大多数开源项目中,通常有一个上游存储库,但这不是强制性的)。与强制所有用户之间所有更改同步的集中式系统相比,分布式系统专注于更改的共享。这有一些优势,但可能不适合所有类型的项目。例如,每个开发人员都有一个本地版本控制系统,可用于草稿,这些草稿并不重要到足以将它们同步到集中式服务器。
项目越复杂,存储库中就会出现越多的不同版本。如果开发人员或团队朝着特定版本(例如修复一些错误)工作,则最好为每个版本提供一个唯一的版本号。这有助于用户区分不同的版本,以便他可以看到自己使用的是应用程序的最新版本。
一种广泛使用的版本编号方案是使用三位数字。第一位数字表示主要版本。只有在发生重大更改或添加了许多新功能时才应更改它。第二位数字表示次要版本。如果添加了一些(较大的)功能或修复了许多错误,则会增加它。第三位数字显示代码的微小更改,可能是在之前的版本中被忽略的关键错误修复,需要快速修复。当然,可以使用完全不同的方案对版本进行编号,例如仅使用两位数字或使用版本的指定日期。
大多数版本控制软件使用与其他系统相同的术语,因此这里有一个软件版本控制中常用词语的快速列表[1]
- 分支
- 分支是从当前使用的代码库中分叉或拆分出来。这在包含实验性功能或代码的特定部分需要进行重大修改时很有用。
- 检出
- 在存储库中创建任何版本的本地副本。
- 提交
- 将更改后的代码提交到存储库。
- 冲突
- 如果不同的开发人员对同一个文件进行了更改并提交,而系统无法合并这些更改而不会冒损坏代码的风险,则可能会发生冲突。必须解决冲突(手动),或者必须放弃其中一个冲突更改以支持另一个更改。
- 合并
- 合并是一个操作,其中一个或多个更改应用于文件。例如,这可以是将分支合并到主代码行中,也可以是仅向存储库提交一个小改动。理想情况下,系统可以自动合并文件,没有任何问题,但在某些情况下可能会发生冲突(见上文)。
- 存储库
- 包含项目的最新数据。所有更改都提交到存储库,以便每个开发人员都可以访问最新版本。
- 主干
- 开发行的名称,其中包含项目最新的、最前沿的代码。
- 更新
- 从存储库接收更改后的代码,使本地版本与存储库中的版本保持一致。
版本控制软件
[edit | edit source]流行的版本控制系统包括 SVN(Subversion)、Git、CVS、Mercurial 等等。在本部分中,我们将重点关注最广泛使用的两种系统(SVN 和 Git),并解释如何在 Visual Studio 中使用它们来组织和控制 XNA 项目。
可以在此处找到详细列表和比较:版本控制软件比较
Subversion
[edit | edit source]简介
[edit | edit source]SVN 代表 Subversion,由 Apache 基金会开发。它是一个集中式的软件版本控制系统,这意味着它有一个由服务器托管的中央存储库(项目存档),客户端可以访问它。当用户在本地更改文件并将其提交到存储库时,只会传输所做的更改,而不是整个文件。这使得系统非常高效。此外,Subversion 存储库的大小与所做更改的数量成正比,而不是修订的数量。这将存储库的大小保持在最小。
Subversion 背后的文件系统使用两个值来标识文件系统中特定文件的特定版本:路径和修订号。Subversion 文件系统中的每个修订号都有自己的根目录,用于访问该修订号的内容。最新修订号在 SVN 中被称为“HEAD”。
SVN 文件系统中的检入是通过使用事务来保持原子的。这意味着客户端要么提交所有内容,要么不提交任何内容。这有助于避免由检入错误或有缺陷的事务引起的构建失败。因此,事务可以被提交并成为最新修订号,也可以在任何时候被中止。
Subversion 被视为 CVS 的进一步发展,CVS 是另一个但更古老的版本控制系统,它不再被积极开发。它改善了 CVS 的一些问题,例如移动文件和目录或重命名文件和目录,而不会丢失版本历史记录。此外,在 SVN 中,分支和标记更快,因为它只是在存储库中实现为一个复制操作。
SVN 的客户端/服务器概念
[edit | edit source]Subversion 系统的概念是,存储库托管在服务器上,并由不同的 SVN 客户端通过 SVN 服务器访问。每个客户端都可以检出一个工作副本,对其进行操作并将更改提交到中央存储库(提交)。然后,所有其他客户端都可以更新其工作副本,使其始终与中央存储库中的最新版本同步。
在 Windows 中设置 SVN 服务器
[edit | edit source]安装 SVN 服务器
[edit | edit source]首先从官方网站下载 Subversion Windows MIS 安装程序:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&expandFolder=91&folderID=74
当前版本称为:Setup-Subversion-1.6.6.msi
然后在 Windows 上安装 Subversion。要检查 Subversion 是否已成功安装和配置,请在 Windows 中打开一个新的命令窗口(通过单击“开始”→“执行”→然后输入“cmd”并按“确定”)。在命令窗口中输入 svn help
,如果一切正常,您应该看到一些帮助信息。
使用 SVN 服务器和 TortoiseSVN 创建 SVN 存储库
[edit | edit source]现在我们将创建一个 Subversion 存储库。为此,我们将使用另一个名为 TortoiseSVN 的工具,它是一个流行的程序,用于在 Windows 中访问和使用 SVN 存储库。它是一个 Subversion 客户端,它作为 Microsoft Windows shell 扩展实现,可以在 Windows 资源管理器中轻松使用。
因此,首先从这里下载 TortoiseSVN:https://tortoisesvn.net.cn/downloads.html 然后进行安装。安装后,应该会在 Windows 资源管理器的右键单击上下文菜单中添加新的菜单项,允许直接在 Windows 中使用 SVN 命令。
然后,我们需要创建一个新文件夹,用于存储服务器将来存储的存储库。在本例中,我们将创建一个名为 D:\repository 的文件夹。
然后右键单击这个新文件夹,并选择 TortoiseSVN –> 在此处创建存储库...,TortoiseSVN 将在这个文件夹中创建空 SVN 存储库的默认结构。
现在,要向存储库添加一些内容,我们将首先在一个临时文件夹中创建一个所谓的标准布局,然后将此文件夹导入到我们的新存储库中。因此,创建另一个名为 D:\structure 的文件夹。在此文件夹中添加三个子文件夹,并分别命名为:trunk、tags 和 branches。trunk 目录是项目的根目录,将包含所有版本化的数据。
现在,要导入 structure 文件夹,请右键单击它,然后选择 TortoiseSVN –> 导入...。在打开的窗口中,将以下路径作为“存储库的 URL”插入
file:///D:/repository
导入消息应包含要导入存储库的版本的注释。编写类似“首次导入”的内容,然后单击“确定”。应该会打开一个新窗口,记录导入到存储库中的所有三个文件夹。就是这样,您可以删除名为 structure 的临时文件夹,因为数据现在已经在存储库中。
设置 Subversion 服务器
[edit | edit source]此外,我们应该调整新存储库的安全性,这一点在网络或互联网中使用存储库时尤其重要。这意味着为匿名用户(所有人)和认证用户(拥有存储库登录名和密码的用户)设置安全级别,并使用其密码配置用户帐户。
为此,请在文本编辑器中打开文件 D:\repository\conf\svnserve.conf。默认情况下,所有配置参数都是注释掉的,因此,如果您要激活一个参数,则必须通过删除行开头的 # 来取消注释它。重要部分在第 12 行和第 13 行
anon-access = read auth-access = write
访问设置是 read、write 和 none。在上述情况下,每个人都可以从存储库检出当前版本,但只有经过身份验证的用户(拥有帐户)才能提交更改。这是大多数开源项目的操作方式,所以让我们暂时保留此设置。如果您将一个或两个参数都设置为 none,则任何人都无法从存储库中读取或写入。
现在,我们只需要添加一些经过身份验证的用户来测试系统。为此,请取消注释 conf 文件中第 20 行,该行显示为
password-db = passwd
这意味着包含登录名和密码的数据库可以在与 svnserve.conf 相同目录下的名为 passwd 的文件中找到。因此,请保存 svnserve.conf 并打开默认文件 passwd。通过在文件中添加具有以下模式的新行,可以定义新的用户
username = userpassword
因此,只需创建一个测试帐户并保存文件。
使用 SVN 服务器托管存储库
[edit | edit source]现在是时候使用我们的存储库了,所以让我们用 SVN 来托管它。打开一个窗口命令行窗口,然后执行以下操作
svnserve -d -r "D:\repository"
这将启动并启用 SVN 服务器。每次您想使用服务器时,都需要以这种方式启动它,但这只是我们使用服务器和客户端在同一台机器上的测试环境。通常,SVN 服务器位于互联网上的单独服务器上。
使用 SVN 客户端
[edit | edit source]使用 TortoiseSVN 客户端检出工作副本
[edit | edit source]我们不会直接在仓库上工作,因为它属于服务器,而 SVN 背后的原则在于每个人在项目上工作时都会检出自己的副本并在本地(工作副本)使用它。通常,SVN 服务器是一个网络资源,用于检出项目的副本并提交在本地进行的更改(提交)。
因此,让我们从自己的本地 SVN 服务器检出一个工作副本并使用它。我们将再次使用 TortoiseSVN。在 D:\workcopy(或任何其他路径)中创建一个新文件夹。右键单击新文件夹,然后在上下文菜单中选择 SVN 检出。
对于仓库的 URL,请填写
这意味着我们从一个恰巧在本地设置的 SVN 服务器(这就是我们可以使用 localhost 的原因)进行检出。trunk 文件夹包含最新版本。将其余设置保持原样(启用 HEAD 版本),然后单击确定。
如果您在安全设置中配置了需要验证用户才能执行检出,那么您需要输入您的登录名和密码。否则,如果您启用了匿名用户的读取权限,则不会提示您。
状态窗口将告诉您关于成功检出和版本号的信息。检出现在已完成,仓库的内容现在位于工作副本目录中。但它为空,因为我们的仓库中还没有任何文件。只有一个名为 .svn 的隐藏目录,它包含一些内部 SVN 版本历史记录,不应删除。
现在,我们将向工作副本添加一个简单文件,并使用 TortoiseSVN 将其提交到仓库。稍后,我们将直接在 Visual Studio 中使用整个项目执行此操作。
在 Windows 资源管理器中,在 workcopy 检出中添加一个文本文件,然后右键单击它并选择:TortoiseSVN -> 添加... 新文件的图标现在应该从一个小问号变为蓝色加号(如果它没有,请使用 F5 刷新)。
该文件现在被标记为将来要添加的内容,但尚未提交。这是通过右键单击工作副本文件夹并选择来完成的:SVN -> 提交... 输入注释(此注释应包含对更改的简短摘要,以便更清楚地了解在文件的哪个版本中进行了哪些更改),然后单击确定。
此时应再次要求您输入密码和登录名,但您也可以保存它,以便 TortoiseSVN 不会再次询问。重要的是,您要配置您的 SVN 服务器,以便提交只能由已验证的用户执行,以便更容易跟踪谁提交了更改,并防止未注册的人员进行不必要的更改。
在此步骤之后,状态窗口应告诉您关于成功提交的信息。
在 Visual Studio 中使用 AnkhSVN 使用 SVN
[edit | edit source]我们已经了解了 SVN 客户端 TortoiseSVN,它使用 Windows 上下文菜单将 SVN 集成到 Windows 资源管理器中,但如果我们能够直接在 Visual Studio 中使用 SVN,那就更好了。有两个项目提供这种功能:AnkhSVN 和 VisualSVN。虽然 VisualSVN 是一款商业产品,需要花费 50 美元才能获得个人许可证,但 AnkhSVN 是开源的,免费的。这就是为什么我们在这篇文章中只看一下 AnkhSVN 的原因。
AnkhSVN 支持 Microsoft Visual Studio 2005、2008 和 2010。它提供了一个界面,可以在 Visual Studio 开发环境中直接执行所有重要的 SVN 操作。可以在这里下载 AnkhSVN:http://ankhsvn.open.collab.net/downloads
安装 AnkhSVN,我们就可以开始了。
使用新仓库的最简单方法是使用 Visual Studio 创建一个新项目,并将其放在我们的 workcopy 目录中。Visual Studio 应该已经自动识别到它是在 SVN 工作副本中创建的,因此 SVN 功能和仓库的正确地址已经设置好了。
此时,我们在仓库中创建了一个新项目,因此所有新文件都需要首先提交。为此,AnkhSVN 在开发环境中提供了不同的方法。
- 您现在可以打开一个窗口来查看和提交更改(视图 -> 挂起的更改)。在那里,您可以看到所有需要提交的文件的列表。只需单击提交,然后像在 TortoiseSVN 中一样输入注释,一切应该都能正常工作。
- 将项目提交到仓库的另一种方法是右键单击解决方案资源管理器中的解决方案名称,然后单击“提交解决方案更改”。在解决方案资源管理器中,您还可以看到类似于 TortoiseSVN 中使用的图标,以显示每个文件的同步状态。
- 要更新来自仓库的更改,只需单击挂起的更改视图中的更新即可。同样,还有另一种方法,即右键单击解决方案资源管理器中的解决方案名称,然后在上下文菜单中选择“将解决方案更新到最新版本”。
- 要从仓库检出现有的 Visual Studio 项目,请单击打开 -> Subversion 项目... 然后输入 SVN 服务器地址,并在仓库中找到项目文件。
- SVN 的其他功能,如合并分支、切换分支、锁定文件等等,也可以通过解决方案资源管理器中的上下文菜单获得。
您不需要使用 AnkhSVN 来在 SVN 仓库中使用 Visual Studio 项目。您也可以使用 SVN 命令行工具或 TortoiseSVN。您应该注意的是,您提交了哪些文件,因为 Visual Studio 会在机器上的解决方案目录中本地创建构建和调试文件,这些文件不应提交,而应在每个人的机器上重新构建。
您应该提交 Visual C# 解决方案的 *.sln 文件,但不提交 *.suo 文件(两者都在解决方案的主文件夹中)。您还应该提交所有其他文件,除了 bin 和 obj 文件夹。通过在 Windows 资源管理器中右键单击并选择 TortoiseSVN -> 添加到忽略列表,您可以将这些文件夹永久添加到忽略列表,以便它们不会提交到仓库。
如果您在 Visual Studio 中使用 AnkhSVN,则不必担心这个问题,因为它会自动添加和提交必要的文件。
Git
[edit | edit source](介绍原则,谈论客户端和服务器软件,以及如何与 Visual Studio 集成。展示如何使用它,也适用于初学者。)
Git 是一个分布式版本控制系统。它由 Linux 的创建者 Linus Torvalds 于 2005 年开发。Git 的重点在于速度和可扩展性,适用于大型项目。项目的规模(以及仓库的大小)对补丁的性能影响很小[2]。
简介
[edit | edit source]Git 的基础设施
[edit | edit source]基本上,Git 包含三个主要部分,这些部分在使用 Git 时很重要。由于 Git 是一个分布式系统,因此您有一个本地仓库,顾名思义。这是记录所有更改的地方。您所有的更改首先提交到您的本地仓库,然后必须明确推送到远程仓库。包含您代码的文件位于工作目录中。在工作目录和本地仓库之间是一个暂存区,它收集所有更改,然后再将它们提交到本地仓库。它就像一个装卸区,包裹在装入飞机之前先存放在那里。
术语
[edit | edit source]Git 使用的术语与上面词汇表中描述的略有不同。更改会被添加到暂存区。提交描述了将文件从暂存区添加到本地存储库的过程,而推送则将所有更改发送到远程存储库。获取是指从远程存储库获取所有更改到本地存储库。拉取直接将远程存储库复制到本地存储库。检出会还原本地存储库中的更改,并从暂存区或本地存储库中恢复文件的狀態。右侧的图表说明了 Git 的数据流。
使用 Git 有两种方法:通过命令行或 GUI。前者完全依赖于基于文本的命令,并在所有操作系统上运行。或者,可以使用图形用户界面来管理你的源代码。虽然命令行输入有其优点(例如独立于操作系统),但它实际上迫使用户学习命令(用于创建存储库、提交、更新等),这可能会在最初减慢开发过程。在我们的例子中(使用 XNA 创建游戏)使用 GUI 非常有利,因为我们可以与 Visual Studio 紧密集成,并可以直接从开发环境中管理项目。Windows 下有许多 Git 图形工具。由于 TortoiseSVN 在 SVN 用户中很受欢迎,它的 Git 版本 TortoiseGit 可能是一个选择,但它目前还没有达到 SVN 版本的水平。因此,我建议使用 Git Extensions。它具有与 Visual Studio 的直接集成,并且结合 Git Source Control Provider,我们可以在项目中看到显示文件状态的小图标(例如冲突、提交状态等)。
安装 Git Extensions 很容易,只需下载 最新版本,包括 MsysGit(本质上是 Git 的 Windows 原生移植)和 KDiff3(用于比较和合并文件),然后启动安装程序。确保选择“安装 MSysGit”(必选)和“安装 KDiff”(推荐),并检查是否已选择你 Visual Studio 版本(本例中为 2008)的支持。启动 Git Extensions 后,可能会弹出一个清单,提醒你设置一些参数。如果 Git 的路径未检测到,则必须将其指向其安装文件夹。此外,你需要指定用户名、电子邮件地址以及 diff 和 merge 工具。如果一切正常,清单应显示所有项目为绿色。
如果你有自己的服务器,你可以像上面描述的那样轻松地设置一个 SVN 服务器并托管自己的存储库。但是,如果你在一个小型开源项目上工作,建议使用一个可用的免费开源托管服务。有很多免费的开源托管服务可以帮助托管和分发开源项目。大多数提供 SVN 版本控制系统,有时还会提供其他系统,如 Git 或 Mercurial。
因此,这些托管服务不仅提供了版本控制系统,这对与团队协同工作非常有用,而且还可以帮助托管项目以供公开分发。另一个优势是,通过这种渠道更容易找到更多你的项目的开发人员,因为它对于其他开源开发人员来说更加可见。
可以在 这里找到带有详细比较的开源托管服务的完整列表。最受欢迎的是 Google Code、SourceForge 和 GitHub。
在 Google Code 上托管项目非常容易,你不需要像在 SourceForge 上那样申请并等待通过。只有两个要求
- 项目必须是开源的。
- 你必须在 Google 能够开展业务的国家/地区(几乎是全世界)。
它仅限于开源,因为 Google Code 的目标是帮助没有资金无法负担托管的开源开发人员。建议在项目中明确声明使用可用的开源许可证之一。因此,对于需要托管以实现高效团队协作和分发的较小型业余项目来说,Google Code 是正确的选择。
Google Code 上的每个项目都有自己的 Subversion 和 Mercurial 存储库。 Mercurial 是另一个基于分布式系统且跨平台的版本控制系统。
除了具有存储库和代码托管的版本控制系统之外,Google Code 还提供了一些有用的额外功能,例如错误跟踪系统、可用于文档的项目 wiki 以及与 Google Groups 中的邮件列表的集成。所有这些都可以通过简单的 Web 界面访问。有关更多信息,请阅读官方 Google Code 常见问题解答:http://code.google.com/p/support/wiki/FAQ
要开始你的项目,你需要一个 Google 帐户并按照此页面上的步骤操作:http://code.google.com/p/support/wiki/GettingStarted
SourceForge 是全球最大的开源软件托管网站。它成立于 1999 年,迄今已托管了超过 230,000 个项目,拥有超过 200 万注册用户。其目标与 Google Code 相似:提供免费服务来帮助人们构建和分发开源软件。
它通过为用户提供多种版本控制系统,充当开源软件开发人员的集中位置:SVN、CVS、Git、Mercurial 和 Baazar。其他功能包括项目 wiki、错误跟踪系统、MySQL 数据库和 SourceForge 子域。
SourceForge 还包含一个内部排名系统,使活跃的项目更容易被其他开发人员发现,这有助于吸引更多人加入你的项目。
要在 SourceForge 上托管,你首先需要申请并接受他们的使用条款(其中涉及授予 SourceForge 永久许可证)。然后,SourceForge 团队将决定是否接受你的项目作为 SourceForge 项目。
两个重要的标准是,你的项目要生成软件、文档或软件的聚合(例如 Linux 发行版),并且你的项目要使用其中一个开源许可证。如果不是开源,则会被拒绝。
通常来说,在 SourceForge 上托管一个刚开始的非常小型的私人项目比较困难。Google Code 是更好的选择,因为它不需要通过。
要开始,请先在 SourceForge.net 上注册一个帐户。
托管你的项目的另一种选择是 Github。只要你的项目是开源的,并且对所有人公开,创建帐户和存储库都是免费的。你将拥有大约 300 MB 的存储空间(没有“硬”限制),因此请注意,如果你将大型纹理或音频文件推送到存储库中。如果你需要受限访问,则需要付费。有多个付费计划可供选择,具体取决于你的需求。注册后,你需要创建一个新的存储库。给它一个名称,并可选地提供描述和主页 URL。
现在你需要配置 Git Extensions 将存储库克隆到你的计算机,这是一个非常繁琐的任务。按照 "设置 SSH 密钥" 过程(最后一步是可选的,它只是检查一切是否正常工作)。确保记住你输入的密码短语。现在你需要创建一个私钥文件。启动 puttygen.exe,选择 Conversions -> Import。导航到 id_rsa 文件(没有扩展名的文件)并选择它。单击“保存私钥”并将其存储在某个位置,但请确保其扩展名为 *.ppk。现在启动 Git Extensions,选择克隆存储库。现在你需要填写以下字段
- 要克隆的存储库:来自 github 源选项卡的 SSH 地址。应该是类似“[email protected]:username/projectname.git”的内容
- 目标:存储存储库的文件夹。(例如 D:\Repositories)
- 要创建的子目录:放置你文件所在的子目录的名称(例如“XNA Project”,生成的路径为 D:\Repositories\XNA Project)
点击“加载 SSH 密钥”,并将其指向您之前创建的 *.ppk 文件。完成后,点击“克隆”。仓库现在正在复制到您的计算机。完成后,您可以开始将您的 Visual Studio 解决方案放到仓库文件夹中并进行操作。通过 Git Extensions 中的“提交”按钮,您可以将您的文件提交到本地仓库并将其推送到 github。请记住,您可能需要先将文件添加到暂存区。如果您想从远程仓库获取最新文件,请点击“拉取”按钮。
与您一起参与项目的其他人员也需要拥有 github 帐户。您可以从项目的管理面板中将其添加为合作者。他们将拥有完全的读写权限。如果您需要有关此处描述的任何过程的进一步帮助,请查看 Github 帮助系统。它非常全面,并且以带有有用屏幕截图的形式描述了几乎所有内容。
SVN - Leonhard Palm Git/版本控制软件 - Lennart Brüggemann
- ↑ 修订控制#通用词汇 维基百科。2011 年 5 月 18 日获取。
- ↑ DVCS Round-Up: One System to Rule Them All?--Part 2. Linuxfoundation.org. 2011 年 5 月 18 日获取。