1.1 Git简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
- 软件,类似于 office、OBS等安装到电脑上才能使用的工具。
- 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。
- 分布式
- 文件夹拷贝
- 本地版本控制
- 集中式版本控制
- 分布式版本控制
特点:
- Git 是分布式的
- Git 把内容按元数据方式存储
1.2 为什么要做版本控制
如果你用Word写过论文,那你一定有这样的经历:
自己感觉很厉害的论文,导师一看就给你提出来很多修改意见。你打算马上修改,但又怕将来想恢复找不回来,就先把当前文件“另存为”一个新的Word文件,再接着改,改到一定程度,再“另存为”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
过了一段时间,你打算总结一下论文写作的经验,需要找回被修改的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,十分的麻烦。
这样不仅文档一堆显得桌面十分凌乱,找文章的时候还很麻烦。
如果论文需要和其他人一起合作撰写,你已经写了一部分,然后把文件传给了合作者,由于时间比较紧张,你必须继续撰写文章。一段时间后,你的合作者将文档传回给你,此时你必须要想发给合作者之后到你收到他的文件期间,你做了哪些改动?你得把你改动的部分和他新撰写的部分合在一起,十分的麻烦。
这时你就在想,能不能有一个软件不但能自动帮记录每次文件的改动,还可以协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。
版本 | 文件名 | 用户 | 说明 | 日期 |
---|---|---|---|---|
1 | git.docx | 柯哆 | 增加了为什么要做版本控制 | 2/18 8:37 |
2 | git.docx | 柯哆 | 增加了于是git就这样诞生了 | 2/18 10:09 |
3 | git.docx | 光头强 | 删除了于是 | 2/19 10:51 |
4 | git.docx | 柯哆 | 增加了拓展 | 2/19 16:17 |
git就这样诞生了
做版本控制的原因简单来说就是要保留之前所有的版本,以便回滚和修改。
1.3 安装git
在你开始使用 Git 前,需要将它安装在你的计算机上
在 Linux 上安装
首先,你可以输入git
,查看系统有没有安装 Git :
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
像上面的命令,就是告诉你系统还没有安装 Git 。
如果你想在 Linux 上用二进制安装程序来安装基本的 Git 工具,可以使用发行版包含的基础软件包管理工具来安装。 以 Fedora 为例,如果你在使用它(或与之紧密相关的基于 RPM 的发行版,如 RHEL 或 CentOS),你可以使用 dnf
:
$ sudo dnf install git-all
如果你在基于 Debian 的发行版上,如 Ubuntu,请使用 apt
:
$ sudo apt install git-all
或者 sudo apt-get install git
注意:
旧的Debian或Ubuntu Linux,要把命令改为
sudo apt-get install git-core
因为以前有个软件也叫GIT(GNU Interactive Tools),结果Git就只能叫
git-core
了。由于Git名气实在太大,后来就把GNU Interactive Tools改成gnuit
,git-core
正式改为git
。
如果是其他Linux版本,请参考Git 官方网站上的安装步骤,网址为 https://git-scm.com/download/linux
拓展:
如果在有 yum
的系统上(比如 Fedora)或者有 apt-get
的系统上(比如 Debian 体系),可以用下面的命令安装:
各 Linux 系统可以使用其安装包管理工具(apt-get、yum 等)进行安装:
Debian/Ubuntu Git 安装命令为:
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
libz-dev libssl-dev
$ apt-get install git
$ git --version
git version 1.8.1.2
如果你使用的系统是 Centos/RedHat 安装命令为:
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
git version 1.7.1
源码安装
我们也可以在官网下载源码包来安装,最新源码包下载地址:https://git-scm.com/download
安装指定系统的依赖包:
########## Centos/RedHat ##########
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
########## Debian/Ubuntu ##########
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
libz-dev libssl-dev
解压安装下载的源码包:
$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
在 macOS 上安装
在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 git
命令即可。
$ git --version
如果没有安装过命令行开发者工具,将会提示你安装。
如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 macOS Git 安装程序可以在 Git 官方网站下载,网址为 https://git-scm.com/download/mac
你也可以将它作为 GitHub for macOS 的一部分来安装。 它们的图形化 Git 工具有一个安装命令行工具的选项。 你可以从 GitHub for macOS 网站下载该工具,网址为 https://mac.github.com。
在 Windows 上安装
在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win,下载会自动开始。
另一个简单的方法是安装 GitHub Desktop
。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell,提供了稳定的凭证缓存和健全的换行设置。 稍后我们会对这方面有更多了解,现在只要一句话就够了,这些都是你所需要的。 你可以在 GitHub for Windows 网站下载,网址为 GitHub Desktop 网站。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
1.4 Git 配置
在系统上安装 git 后,需要进行一次 git 配置。
每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。
Git 自带一个叫做 git config
的工具,专门用来配置 Git 外观和行为的配置变量
这些变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:包含系统上所有用户及他们仓库的通用配置。若使用git config
时用--system
选项,读写的就是这个文件- 注意:由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它
~/.gitconfig
或~/.config/git/config
文件:用户目录下的配置文件只适用于当前用户。若使用git config
时用--global
选项,读写的就是这个文件,它会对当前系统上 所有 的仓库生效- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config
文件):这里的配置仅仅针对当前仓库有效。若使用git config
时用--local
选项让 Git 强制读写此文件,虽然默认情况下用的就是它。 (当然,你需要进入某个 Git 仓库中才能让该选项生效)
每一个级别的配置都会覆盖上层的相同配置,所以 .git/config
里的配置会覆盖 /etc/gitconfig
中的同名变量。
在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig
文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Users\$USER
此外,Git 还会尝试找寻/etc/gitconfig
文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。
你可以通过以下命令查看所有的配置以及它们所在的文件:
$ git config --list --show-origin
用户信息
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:个人的用户名称和电子邮件地址:
$ git config --global user.name "keduo"
$ git config --global user.email keduo@email.com
如果使用了 --global
选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config
文件里。
文本编辑器
如果未配置,Git 会使用操作系统默认的文本编辑器。如果你有其他偏好,比如 Emacs 的话,可以重新设置::
$ git config --global core.editor emacs
如果你需要使用其他的编辑器,请在 git config core.editor 命令 中查看设置为该编辑器的具体步骤。
差异分析工具
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff
的话:
$ git config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。
查看配置信息
要检查已有的配置信息,可以使用 git config --list
命令:
$ git config --list
user.name=keduo
user.email=keduo@email.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
有时候你会看到重复的变量名,那是因为 Git 会从不同的文件中读取同一个配置(如:/etc/gitconfig
与 ~/.gitconfig
)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。
可以通过输入 git config <key>
: 来检查 Git 的某一项配置:
$ git config user.name
keduo