开源101:版本控制系统和Git
开始使用开源生态系统。
开源
开源项目是那些源代码对公众可用且免费使用的软件。它们由那些自愿投入时间实施新功能或修复错误的个人定期维护,以便用户能够不断从软件的使用中受益。
在本教程中,我们将看到如何开始进行开源 – 从了解Git和版本控制开始。这意味着这篇文章是针对初学者的,但有经验的开发人员也可以学到一些东西。
版本控制
想象一个艺术家给一个孩子画画,当她的铅笔碰到画布时,作品开始成型,但最终只会有一件作品可用。如果,当艺术家绘画时,每个阶段都会产生一个新版本会怎么样。她在画完孩子的头后,将该版本保存在某种系统上。她继续画画,这就创建了一个新版本。她可以选择将这个更新的版本单独存储,这是先前保存的版本的扩展副本,这样她现在有两个可用的版本,新更新的版本也包括她之前完成的部分。
当她继续绘画时,第二位艺术家过来请求帮忙画孩子的右手。他拿到第二个版本并在上面工作,不对第一位艺术家正在制作的当前作品进行任何直接更改。最终,总共有三位艺术家为这幅画做出了贡献,共有20个版本可用,其中包括完成的版本,他们可以回到以前的版本并用它做一些全新的事情。
这与版本控制的工作方式类似。它是一种使开发人员能够作为团队管理对软件的贡献的系统。在我们的例子中,如果我们制作了一种特殊的画布,用于生成和保存绘制图片的版本,那么该系统将是一种旨在帮助艺术家管理其对艺术创作的贡献的版本控制系统。
此版本控制系统(也称为VCS)应能够显示创建的工作版本之间的差异,并能够检测到新旧版本之间可能发生冲突的情况。例如,如果一个艺术家在手臂上工作,另一个在手上工作,这两部分应该完美地契合在一起,就像它们是一起画的一样。如果出现这种情况,则应检测到差异,并向艺术家发出警报。
此版本控制系统将管理以下工作:
- 存储相同工作或项目的版本,这是项目(软件)的更改(历史)的集合。
- 使团队能够在工作的指定部分上的更改。
- 它还可以作为完成的工作的备份。
Git
Git是一种现代版本控制系统,广泛用于软件开发。它为您提供使用版本控制系统的所有好处,以及使您能够对开源项目进行贡献的其他好处。
通过使用Git,所有在系统上工作的开发人员都能够在他们的本地机器上拥有软件的副本。这是Git是分布式版本控制系统的结果。
如果您的机器上尚未安装Git,请按照下面的说明进行安装。
安装Git
要使用Git,您需要在本地机器上安装它。为了本教程的目的,我们将介绍其在Linux(Ubuntu),Mac和Windows上的安装。
为确保您尚未安装Git,请从终端运行以下命令。
git --version
如果您收到“命令未找到”错误,那么您可以根据您使用的操作系统进行安装。
Ubuntu
在终端中运行以下命令:
sudo apt install git
Mac
让我们从安装brew开始 – 一个可以轻松安装和编译软件包的包管理器。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Windows
您可以从here下载Windows的官方Git版本。
下一步是配置git以使用我们的详细信息。在此过程中,我们还将继续使用我们的Github帐户,这是谈论Github的绝佳时机。
Github
让我们回到我们想要为艺术家构建的虚拟版本控制系统。
还记得我们说过git是一种版本控制系统。尽管版本控制系统将帮助艺术家们进行协作,但他们在某个时候仍然需要一种存储他们所完成作品的方式。虽然每个项目将由版本控制系统管理,但如果有一种方法可以保存(存储)已完成的作品,那就太好了。这就是Github的作用。
可以将其视为一个存放不同项目的文件柜。所以艺术家正在画的男孩将存放在一个文件柜中,并由git管理。当他们开始另一个项目时,这将存放在另一个文件柜中,同样由git管理。这些项目中的每一个都独立于git的管理方式。
在软件开发中,我们不称之为文件柜;我们称之为存储库。
Github是一个云托管服务,用于存储这些项目。要创建GitHub帐户,您必须转到sign-up page创建账户。
在本文中,我们不会深入探讨GitHub的不同方面,请创建帐户并确认您的电子邮件地址,然后完成后返回此处。
配置Git
要开始使用git,我们需要使用我们的详细信息进行配置。使用git的一个好处是,除了跟踪随时间进行的更改外,它还跟踪谁进行了更改。
为了实现这一点,它需要配置您的详细信息。要这样做,您需要打开终端。
git config --global color.ui true
git config --global user.name "YOUR NAME"
git config --global user.email "[email protected]"
第一个命令将git的UI颜色设置为true,而其他两个命令设置用户的名称和电子邮件,也就是你自己。因此,您需要在引号内输入您的姓名和电子邮件地址。我建议您使用创建GitHub帐户时使用的用户名。
接下来,让我们生成一个SSH密钥。
SSH密钥用于身份验证,它包括一对公钥和私钥。其中一个密钥(公钥)用于加密消息,另一个密钥用于解密消息。虽然您也可以使用用户名和密码登录到GitHub帐户,但GitHub验证用户的另一种方式是使用SSH密钥。
要生成一个SSH密钥,您需要输入以下命令:
ssh-keygen -t rsa -C "[email protected]"
记得使用您的电子邮件地址。您将被要求选择保存密钥的位置,可以通过按下Enter键选择默认位置。您还将被要求选择一个可选的密码短语以保证密钥的安全性,如果您愿意,可以跳过此步骤。最后,密钥将被生成。
接下来,您需要复制生成的密钥;您可以通过运行此命令来获取密钥:
cat ~/.ssh/id_rsa.pub
复制它并点击 here,然后点击新的SSH密钥按钮,粘贴您复制的密钥,输入一个标题,并保存。对于标题,您可以选择您当前使用的机器。例如:MacBook Pro。
要确认它是否起作用,请转到您的终端并输入以下命令:
ssh -T [email protected]
应该会得到如下响应。
嗨 kinsomicrote!您已成功验证身份,但GitHub不提供Shell访问权限。
结论
现在您知道什么是开源项目以及版本控制和git如何适应该情景。请记住,git是一种版本控制系统,它使开发人员能够向项目贡献代码,然后该项目可以托管在像GitHub这样的云托管平台上。
有了这个理解,下一步将是学习如何使用git来管理您的项目。