搜索 | 会员  
Git版本控制入门指南
来源: CIO之家的朋友们   作者:CIO之家的朋友  日期:2023/1/9  类别:软件项目  主题:综合  编辑:しovの俊熙
Git是一个全世界开发者都在用的版本控制系统。它会帮助你与其他开发者合作,以及跟踪你不同版本的代码。

Git 是一个全世界开发者都在用的版本控制系统。它会帮助你与其他开发者合作,以及跟踪你不同版本的代码。

如果你长时间在一个项目工作,你也许会想对那些有改动的地方保持跟踪:是谁,以及什么时候改动的。要是最终你发现你的代码里有 bug,这跟踪就变得更重要了。

当你刚开始学习 Git 时,它可能有点可怕,令人迷惑。所以在这篇文章里,我会以一种人们易于理解的方式来介绍它。

我们将覆盖像仓库、提交、分支等等这样的话题,所以我们开始吧!

这是我们在这篇文章所要完成的:

  • 什么是 Git?

  • 什么是 GitHub?

  • 如何开始使用 Git?

  • Git 是如何跟踪改动的?

  • 一个典型的 Git 工作流。

  • 用来学习 Git 版本控制的线上课程。

什么是Git?

Git 是一个你可以下载到你电脑上的版本控制系统。如果你想在一个编码项目里和其他开发者合作,或者是你自己的项目里,那么使用 Git 是必不可少的。

为了检查你的电脑是否早就安装好了 Git,你可以在命令行上输入 git --version

如果你早就装好了 Git,你就会看到它的版本。如果你没装好 Git,你可以访问 Git 官网。只需简单地循着下载指示,去给你的操作系统安装正确的版本。

什么是 GitHub?

GitHub 是一个允许你在一个你不知道的远程服务器上(换句话说,就是在云上)管控你的 Git 项目的产品。

Github 不是 Git,记住,这很重要。GitHub 只提供托管服务。还有其他提供托管服务的公司,像 Bitbucket 和 GitLab。

image.png

如何开始使用 Git?

命令行 VS 图形用户界面

你可在命令行里通过输入指令来使用 Git,也可以使用一个图形用户界面(GUI),例如 Sourcetree 或者 GitKraken。

如果你选择命令行,你得去找找你将需要哪些 Git 指令。

幸运的是,你不需要费力去学习这些。除了少数几个你将要最常使用的指令外,剩下的你可以查,在任何你需要它们的时候(这也是大多数开发者所做的,即使是那些有几十年开发经验的人),你都可以查询。Git 在它的网站上提供了详细的文档。

如果你选择使用一个 GUI,那么你需要用到的,多方面的功能,会以一个更加视觉化的方式展现出来。

无论你选择使用命令行,抑或是一个 GUI。为了去自信去使用它,你都将需要理解 Git 工作的基本要素。

对于这篇文章的剩下部分,我会分享一些在命令行使用 Git 的例子。但如果你是在使用一个 GUI,我们分享的步骤也是十分相似的。

如何在 Git 里准备你的项目文件夹

去使用 Git,我们得有一个需要进行版本控制的项目,这可以是一个新的项目,也可以是一个已经存在的项目。

如果它是一个新的项目,那么我们需要创建一个新的项目文件夹(小提示:可以使用mkdir命令),然后在命令行中导航进入这个文件夹。

如果我们选择的是一个已经存在的项目,那么我们只需在命令行中简单导航进去就行了。

在我们的例子里,会创建一个新的项目文件夹叫做novel

image.png

创建我们的项目文件夹

如何创建一个 Git 仓库

当我们进入了项目文件夹,为了开始使用 Git,我们将使用git init命令去创建(或 初始化)一个仓库。

当我们在命令行中,输入,按下回车,执行了这个指令,它可能看上去没有什么多大变化。但别被骗了!Git 可以变得很卑鄙,它在这背后完成了大量动作。

为了看看 Git 在这背后干了什么,我们来瞧瞧我们的隐藏文件。确保在你的文件系统中打开了项目文件夹,然后,如果是 Mac 用户,为了在你的文件系统中查看隐藏文件,可以选用Command+Shift+. ;如果你在 Windows 系统上,可以更改查看里的设置来查看隐藏文件夹。

为了在命令行中查看隐藏文件,我们可以使用命令ls -a

在我们的项目文件夹里,应该看到一个.git文件夹。这就是通常意义上我们的仓库。

image.png

创建我们的仓库

什么是一个 Git 仓库?

在我们项目文件夹里,仓库就是.git文件夹。随着时间流逝,它会在我们项目里面,跟踪所有对文件的改动和记录这个历史。

在我们电脑上拥有的这个仓库,指的是本地仓库 。

先前,我们提到了像 GitHub、GitLab 和 Bitbucket 这样的托管服务。当我们 push(也就是 上传)我们的本地文件夹到其中一家服务里面,那么归属在这些云上的服务里的仓库就被叫做远程仓库 。

使用一个远程仓库是很重要的,目的是能够与其他人合作,也备份一下我们的项目,以防我们的笔记本或电脑会发生什么。

如何使用 Git 与其他开发者合作?

如果其他开发者想在项目里与我们合作,那么他们可以在你所上传的托管服务中 clone(克隆;也即是 下载)这个远程仓库到他们的电脑。

这允许他们在自己的电脑里也可以有这个项目。然后,在他们电脑里的这个项目也被指作本地仓库。

在一个有多个开发者的项目里,每个人都在电脑上有一个本地仓库。而且这有一个所有人都可以贡献和分享他们工作的远程仓库。

image.png

远程仓库和本地仓库

Git 是如何跟踪改动的?

为了在 Git 中保存我们项目的不同版本,我们就使用 commits(提交)。

什么是一个 Git 提交(commit)?

一个提交就是你项目的一个版本。它代表你项目的一个独立版本, 和有一个对所有文件和文件夹的参考引用,这些也是该版本的一部分。

我该如何在 Git 中提交?

为了理解我们如何使用提交,我们得了解 Git 里面的三个不同空间——工作目录、暂存区和提交历史。

工作目录基本上就是被我们项目文件夹里的内容代表了(提示:一个目录和一个文件夹是同一件事)。它有点像一个工作分支,在这分支上,我们可以在项目里增加、编辑和删除文件。

暂存区和提交历史是我们仓库的一部分。

这个暂存区就有点像一个粗略的打草稿的空间。在这,我们可以增加更新了的文件,或为了选中那些我们要在下一次提交中所包括的而移除些文件。

最后,提交历史 基本上就是我们的提交所存在的地方了。在.git文件夹里,一个叫做objects的文件夹代表了提交历史。

image.png

工作目录、仓库、暂存区和提交历史

一个典型的 Git 工作流

步骤一:编辑文件

如果你有一个新的项目,你会在新项目里创建第一个文件。在我们的novel项目文件夹里,做一个简单的文本文件叫做chapter1。我们可以用文本编辑器做这个,也可以在命令行直接做。此例子中,我们通过在命令行直接输入touch chapter1.txt来做。

如果你有一个已存在的项目,你将编辑一些已存在的文件,增加新文件或删除文件。

接下来,我们使用git status命令。该命令会告诉我们,工作目录和暂存区的状态,也会告诉我们这两者是否有何不同。

image.png

增加一个文件到我们的项目

在我们的例子中,只加了一个新文件到我们的新项目中。当我们使用git status命令,Git 告诉我们,工作目录中有一个未跟踪的文件,我们需要在要提交的地方用git add命令去包括它。这把我们带到了步骤二。

image.png

我们的文件在工作目录

步骤二:增加文件到暂存区

我们可以使用git add命令去增加或更新文件到暂存区。如果我们决定不想在下一次提交中包括一些改动了的文件,那么简单地确保不把这些特殊的文件加到暂存区就行了。

image.png

增加一个文件到暂存区

在我们例子中,使用git add命令和传入文件名,只加了我们项目中仅有的文件到暂存区。然后,我们使用git status命令,会看到我们的文件已经加到了暂存区。

image.png

我们的文件在暂存区内

注意该文件并没有从工作目录移到了暂存区,而是从工作目录复制到了该区域。

步骤3:完成提交(commit)

最后,我们用git commit-m选项传入一个提交信息来完成提交。例如:git commit -m "this is the first commit"

image.png

完成我们第一个提交

为了以时间顺序的倒序列出项目中所有的提交,那么使用git log命令。

image.png

我们完成了第一个提交

现在,我们已经在项目中完成了第一个提交!换句话说,我们已经保存了项目的第一个版本。

提交是有 40 个字符的提交哈希值。一个提交哈希值包括 40 个字和数字,它们是该提交的名字,或指向该提交。

我们也可以看到这样的信息:谁完成的提交,提交什么时候完成的,和提交信息。

在 Git 里什么是一个提交历史?

一个仓库由许多提交组成。在最简单的例子里,每一个提交都有一个父提交,它是在本提交之前的一个提交。这就是为什么在下面的图片中,提交后面跟着一个它之前的提交。

当我们进入到多项分支与合并的领域时,会有更多复杂的例子,但这已经超出了这篇文章的范围了。

image.png

,什么是一个分支(branch)?

一个分支就是一个指向提交的指针。在 Git 里,默认的分支叫作 master 或者 main。

进入到.git文件夹,打开refs文件夹,打开heads文件夹,最后打开叫做master的文件,我们可以看到一个分支就是以一个指向提交的指针。

我们可以再一次的用git log命令列出项目中的所有提交,会发现和提交(commit)同行的哈希值旁边括号里有一个master标签。

image.png

在我们`.git`文件夹里展示 master 分支

在命令行上,通过输入git branch命令,我们可以看到所有分支的列表。

image.png

展示这个指向我们提交的 master 分支

分支真的很重要,因为它们大大简化了与他人合作,以及同时操作多个特性或项目的不同部分。

随着我们完成更多的提交,我们所在的分支会更新到指向最近一次的提交。

image.png

展示我们的提交历史和指向最近一次提交的 master 分支

总结

如果你已经成功读到这了,恭喜!关于 Git,你还有一大堆更多的东西要去学,在本文中我们只揭开了冰山一角。在下面免费去查看更多学习 Git 的资源吧!


德仔网尊重行业规范,每篇文章都注明有明确的作者和来源;德仔网的原创文章,请转载时务必注明文章作者和来源:德仔网;
头条那些事
大家在关注
广告那些事
我们的推荐
也许感兴趣的
干货