「git-1」关于Git你应该知道的东西

「git-1」关于Git你应该知道的东西

四月 13, 2021

Git的前世今生

Git 是 Linus Torvalds 2005年为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。版本控制系统记录着我们随时间推移而对代码的更改,存储在一个特殊的数据库中,我们叫它Repository(仓库)。我们可以查看我们项目的历史,看看是谁在什么时间做了哪些更改,如果有错误的话,我们也可以很轻易地将项目还原到以前的状态。

Git和Mercurial都是分布式版本控制系统,其中Git最受欢迎的版本控制系统,因为它免费、开源、而且超级快和可扩展的操作;例如分支和合并在其他的版本控制系统中非常缓慢且及其痛苦。

据统计,全球90%的开发人员使用git,这也就是为什么几乎所有的开发人员述职的时候都提到git的原因。所以git是履历表中必备的技能,应该由内到外的了解。了解它如何跟踪项目的历史和如何有效地与他人合作。

如何开始

下载Git

我们接下来会使用控制台和一些简单的GUI程序进行演示,并且注意,这是一个简单的git引入教程,如果你已经了解了工作流、想要看相关的命令的话,可以直接看本系列的第二篇。所以,首先确保你安装好了Git.这是我的控制台,你的可能与我的看起来不一样,不过没有关系,这是我们要执行Git的地方。

我的控制台

初始化配置Git

第一次使用Git时,我们必须指定一些配置设置。我们必须指定我们的名称、电子邮件、默认的编辑器(可选,在Linux和Mac下默认是vim)以及它如何处理行尾。我们可以指定这些配置设置在3个不同的级别上:系统级别、全局级别和本地级别。他们的作用关系如下所示:

初始化级别

我们可以使用git config 接要配置的级别,再接上相应的项目,比如这里:

git config --global user.name "Your Name"
#用户名
git config --global user.email "email@example.com"
#邮箱

查看信息:

git config -l

  • 如果再次以编辑器的方式配置git的设置我们可以使用 git config --global -e 编辑和查看我们的设置。

什么是文件行尾,怎么处理?

在Windows上,每一个文件的行尾都被标记上了两个特殊的字符:回车和换行。在Mac和Linux上,行尾用换行符表示。这意味着,如果不正确处理行尾,会导致一些奇怪的问题。

win和linux的行尾

为了使不同的操作平台得到相同的代码,我们必须修改Git的行尾处理设置。简而言之,在Windows平台,我们需要设置core.autocrlf属性为true,如果是Linux或Mac平台,则设置为input.例如我是Linux平台,设置为:

寻求帮助

如果你想了解git的相关命令信息,最简单的方法就是搜索,不过,git本身也提供了丰富的帮助文档。比如你想查询关于git config的相关命令,可以在终端中键入git config --help查看完整的帮助。当然你还可以输入git config -h查看简短的总结。

Git的工作方式

在这一章节中,我们将讨论经常被误解的git基本概念和工作方式,很多人在没有适当了解的情况下使用基本的git命令,这也是他们不断卡住的原因。

首先,让我们建立一个工程文件夹。假设我的工程是TestGit,首先让我们初始化一个git仓库,使用的命令是git init.

如果建立了初始的git仓库后,回到我们的终端,使用zsh终端的好处就是,在进入这个文件夹后你可以很直观地看到,终端会有明显的提示这是一个git存储库,如下图。这里展示的是zsh终端环境,在Windows平台可以安装posh-git.倘若没有装像我一样的终端也没有关系,它仅仅会使git变得更加漂亮。

zsh明确指示

.git隐藏文件夹

初始化完成以后,我们会发现,在工程文件夹下会出现一个.git的文件夹。这个文件夹通常是隐藏的,这也是git存储有关我们的项目历史信息和相关分支的地方。当然,你不需要了解太多,只是记住,不要删除这个文件夹。

Git工作流

假设我们的工作文件夹已经初始化了一个git仓库,每当我们的项目达到我们所期望的状态时,我们可以记录我们的更改到存储库中,创建提交就像照快照一样。在git中,我们有一个特殊的区域或者叫做特殊的中间步骤,在其他的控制系统中不存在,它叫做暂存区,我们将修改后的文件添加到暂存区,如果一切正常,我们的快照将被永久地存储在存储库中。

我们可以使用:

git add "你的文件"进行文件的添加(到工作区)。

git commit -m "提交的注释"进行文件的提交(到存储库)

工作流

值得注意的是,如果我们对file1和file2做了修改 ,我们还要使用git add file1来保存我们刚刚的修改(到暂存区),再提交到存储库中。当然,如果途中你删除了file1,同样也要使用add命令来更新暂存区(是的你没看错,即使是删除了文件,也是add命令)。

需要注意的是,git不会自动的追踪文件,我们需要手动的使用add指示git跟踪他们。我们可以使用:git status查看工作状态。如果你使用的是zsh终端,你也可以看出我们的提示标志变成了黄色,也就是“我们的工作区是脏的”,即可以进行下一次提交了。

提交

Git的提交?(commit)

我们每次使用commit提交命令,git会生成唯一的标识符,当然它还包括提交的注释和相关内容的修改信息、通过谁可以获得我们项目完整的快照等等信息。

不同于其他许多版本控制系统,git不存储已经更改的部分,它存储完整的增量信息,这样可以让我们更快地进行恢复。

前面提到过使用git commit -m "注释"可以进行带注释的提交,那如果去掉-m的注释呢?是的。不加m选项可以直接打开默认的编辑器进行长注释的添加。值得注意的是,在这个文件中我们尽量使用标准的格式,也就是开始一段写较短的总结性的注释,接下来一段再写较长的注释。

长注释

什么时候该进行提交?

不建议将提交的粒度分的太细,也不要过于大,这样会很难进行我们日后的修改,同样,不要尝试每天一定要提交多少次,也不要一次提交包含多个错误修复或更新。最佳的做法是当你的工作达到了你想到达的状态时,进行一次提交。

什么时候该提交