如何优雅地使用 Git?

DevWeekly收集整理每周优质开发者内容,包括开源项目工具资源技术文章等方面,每周五首发于DevWeekly,欢迎大家Star并收藏!

提起Git就绕不开一个概念:版本控制系统。

因此,在学习Git之前有必要先了解一下版本系统的概念,这样才会有一个更加全局清晰的认识。

1 版本控制系统

版本控制系统是用来跟踪、制作和管理软件代码变化的工具。它能够帮助开发者存储不同阶段对文件所做的每一个改动,这样我们、或者与我们协作开发的同事就可以在检索到这些改动。

目前主要包含3种类型的版本控制系统:

  • 本地版本控制系统
  • 集中式版本控制系统
  • 分布式版本控制系统

下面,就分别介绍一下这3种版本控制系统。

1.1 本地版本控制系统

如何优雅地使用 Git?_第1张图片

本地版本控制系统是位于你本地计算机上的一个本地数据库,其中每个文件的变化都以补丁的形式存储。

每一个补丁集只包含自上一版本以来对该文件所做的修改。

为了看到文件在任何给定时刻的样子,有必要将文件的所有相关补丁按顺序罗列在一起,直到逐个查看找到对应的版本为止。

本地版本控制系统有一个很大的问题,所有东西都储存在本地。如果本地数据库出了什么问题,所有的补丁都会丢失。如果一个版本发生了什么事情,那么这个版本之后的所有修改都会丢失。

另外,与其他开发者或团队合作是非常困难的。

1.2 集中式版本控制系统

如何优雅地使用 Git?_第2张图片

集中的版本控制系统有一个包含所有文件版本的服务器,多个用户可以同时访问服务器上的文件,把它们拉到他们的本地计算机上,或者从他们的本地计算机上把它们推到服务器上。

相对本地版本控制系统,这与其他开发者或团队的合作变得容易。

这种结构的最大问题是,所有东西都存储在集中式服务器上。如果该服务器出了问题,没有人可以保存他们的版本变化,拉动文件或进行协作。

与本地版本控制类似,如果数据库被破坏,而备份没有被保留,你就会失去整个项目的历史,除了人们碰巧在他们的本地机器上有的单一快照。

比较知名的集中式版本控制系统有Microsoft Team Foundation Server (TFS)和SVN。

1.3 分布式版本控制系统

如何优雅地使用 Git?_第3张图片

有了分布式版本控制系统,用户不仅是从服务器上拉取最新的文件快照,而是一种完全镜像存储库,包括全部历史。

因此,在一个项目上合作的每个人都拥有整个项目的本地拷贝,换句话说,拥有自己的本地数据库和自己的完整历史。

在这种模式下,如果服务器变得不可用或出了问题,任何一个用户资源库都可以将项目的版本拷贝发送给其他用户,或者在服务器可用时再推回到服务器上。只要一个用户包含一个正确的副本就足够了。

而Git就是一个免费的开源分布式版本控制系统,你可以用它来跟踪文件的变化。

它可以实现对版本库的新增、修改、删除等操作。如果做了修改,那么由谁做的?在什么时间和日期做的?做这个修改的原因是什么?

Git都会记下这些行为,所以,总结而言,Git具有如下功能:

  • 可以跟踪仓库变化
  • 可以提交、撤销、修改工程
  • 可以创建一个项目的多个副本,每个副本都可以单独处理
  • 不同副本中的变化可以被比较,也可以被合并

2 为什么用Git?

在做一个有许多组件的大项目时,往往会有多个开发者参与,每个开发者都可以通过Git来对项目代码进行管理。

例如,新增了功能之后可以用来提交代码,如果操作失误可以撤销动作,也可以看到项目经历了哪些变化。

换句话说,通过Git,我们可以更加轻松便捷的管理代码仓库,实现协同开发。

了解了Git的价值和作用,下面就来安装Git并开始用起来吧!

2.1 安装Git

如果想要在我们的电脑上安装Git,可以访问Git的[官方网站](https://www.zhihu.com/question/Git - Downloads (git-scm.com))上下载适合你的操作系统的最新版本Git,它支持Windows、macOS、Linux/Unix。

如何优雅地使用 Git?_第4张图片

下载后,按照不同操作系统的软件安装方式安装该软件,这与安装其他软件一样,以Windows为例,下载后双击安装即可,每个选项都可以选择默认,然后点击下一步。

安装完成后,打开cmd(命令提示符)或终端,输入下面命令来检查git是否已经安装完毕:

git --version

如何优雅地使用 Git?_第5张图片

如果返回了上图中的信息,说明已经安装成功。

3 使用Git

通过前面的步骤已经完成了Git的安装,接下来就是学习如何使用Git。

但是,在正式使用之前,还有一件事需要做,我们需要对Git进行一下配置。

我们需要设置用户名和电子邮件地址,Git 会用它来识别谁做的修改。

3.1 Git配置

如前面所述,我们需要在Git中配置一下用户名和电子邮箱,可以通过如下命令完成配置:

git config --global user.name "YOUR_USERNAME"
git config --global user.email "YOUR_EMAIL_ADDRESS"

这里一定要确保在相应的字段输入正确的用户名和电子邮箱地址。

3.2 Git初始化

Git已经安装了,但是,当你创建一个名为“Git tutorial”目录时,你会发现它和正常的目录没什么区别,我们执行git命令也不起作用。

如何优雅地使用 Git?_第6张图片

这是因为还没有进行Git初始化。

要是仓库真正起作用,我们需要进入到相应的目录,执行下面初始化命令:

git init

img

现在 Git 可以正式工作了。

4 Git命令

前面反复提到,我们使用过程中经常用于代码的提交、修改、撤掉等操作,这时候就需要用到一些Git命令。

下面,就来介绍一些Git中常用的命令。

4.1 git status

这将告诉你使用该命令时项目的状态,你做了哪些修改、哪些尚未提交等。

例如,如果我在前面已经创建的Git tutorial文件夹中添加了两个新文件,Git and Github blog cover.png和Superhero Git.png,然后执行命令,就可以看到下面输出信息:

git status

如何优雅地使用 Git?_第7张图片

上图中的提示信息表示,我们新增了两个文件,但是还没有提交(commit)。

4.2 git add

如前面提示的那样,我们新增了两个文件,但是Git并没有追踪到,这时候就需要我们来高速Git新增了内容,然后它才可以追东文件夹的变化。

有两种方法可以做到这一点,一是把所有新增文件全都添加上去,另一个就是添加指定文件:

添加所有文件

git add .

添加指定文件

git add "file_name"

接下来再使用git status命令来看看在我把 "Git and Github blog cover.png "添加到 Git 之后发生了什么:

如何优雅地使用 Git?_第8张图片

这里你可以看到,现在 Git 识别出我添加了一个新文件。但是,仍然没有提交。

顺便,来讲一下Git的不同状态。

Git将文章状态分为如下几类:

  • Unstaged
  • Staged
  • Committed
  • Modified

当文件没有被添加到 Git 时,它处于unstaged状态。

当文件用git add "file_name "添加到Git中时,它处于staged状态。在这种状态下,所有必要的修改都已经完成,可以提交了。

当我们用git commit -m "commit message "命令保存项目的状态,点击项目的快照,这个状态就被称为Committed状态。通过创建一个提交,你的工作被保存在本地,如果将来你的项目出现一些问题,你可以很容易的回滚到之前的版本。

当我们对提交的文件进行修改时,它就进入了Modified状态。

4.3 git commit

在解释这个命令之前,首先在 "Git tutorial "文件夹中添加一个 "sample.txt "文件,并将该文件夹中的所有文件使用git add .命令添加Git。

添加完所有文件后,我们将用命令创建我们的第一个提交:

git commit -m "commit message"

如何优雅地使用 Git?_第9张图片

现在当你看到git状态时,它会说 “nothing to commit, working tree is clean”,这意味着所有的文件和所做的修改都被保存了。

一个提交就像账本上的一个条目,包含以下信息:

  • 用户名和电子邮箱
  • 提交的日期和时间
  • 提交信息
  • 此次提交的唯一哈希码

我们可以通过如下命令查看这些提交信息:

git log

这将给你返回项目中所有提交的信息。

如何优雅地使用 Git?_第10张图片

这样,我们就完成了一次代码提交。

4.4 git branch

Git 分支是一个非常强大的功能,也是一个需要了解的重要功能。

Git有一些使用非常频繁的场景,用它为项目创建多个副本,并允许你分别对它们进行操作,Git就是通过分支实现了这一点。

如何优雅地使用 Git?_第11张图片

检查项目中的分支

git branch

如何优雅地使用 Git?_第12张图片

创建一个新的分支

git branch "branch_name"

这将创建一个新的 Git 分支,我们的整个项目将被复制到该分支。

现在,当我们检查项目中的分支时。我们会看到一个新的分支 “my_branch”。

如何优雅地使用 Git?_第13张图片

然而,你可以看到星号(*)仍在main分支上,这意味着你仍然在项目的主分支(主副本)上工作,而不是在新的分支上。

要切换到新的分支,需要用到checkout命令:

git checkout "branch_name"

如何优雅地使用 Git?_第14张图片

可以看到,它已经切换到了新分支my_branch。

在这个分支中,你可以做任何修改,它不会影响项目的主分支内容。

Git的命令有很多,这里只是简单的介绍了4个比较常用的命令,用来高速大家Git是如何工作的。

如果对Git其他命令感兴趣,推荐看一下一篇文章Git Cheat Sheet,这篇文章里详细的介绍了50个会用到的Git命令。

5. 辅助工具

没有完美无暇的工具,git也是,当然,有些功能仅仅依赖git是无法完成的。

一些强大的辅助工具能够让开发过程中事半功倍,效率得到极大的提高,下面就来介绍2款git辅助/增强工具。

5.1 tig

Tig是一个基于ncurses的git文本模式接口。它的功能主要是作为一个Git存储库浏览器,但也可以帮助在块级别上分段提交更改,并充当各种Git命令输出的分页器。

5.2 oh-my-zsh

“Your terminal never feltthisgood before.”

提到命令行工具,首推的自然是这款大杀器,bash的替代工具。bash算得上一款中规中矩的shell工具,没有什么缺陷,但是也谈不上优秀,在很多方面考虑的还不够周到,例如,自动补全、语法、高亮显示、提示符等。

提到oh-my-zsh,那就厉害了,102kStar、250+插件、125+主题、1450+贡献者…从这一系列的数字中就可以体现出这款shell工具的生态有多么完善,也足以体现它有多么强大。

zsh是一款bash替代工具,为什么却在这里提及呢?

因为,它的确在git的使用过程中提升了很大的效率。

当我们在Linux下开发时,默认的命令提示符是不指示分支信息和修改状态的,当然,通过修改Linux配置文件写一个函数也可以实现这项功能。

但是,我还是更推荐使用oh-my-zsh,像下面这样,

如何优雅地使用 Git?_第15张图片

你可能感兴趣的:(Github,开发,git,数据库,服务器)