🗂 | 查看 Git 专题可浏览更多内容
版本控制系统
什么是版本控制系统
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
为什么需要版本控制系统
举个最简单的例子,你很有可能有过这样的经历:
你的甲方(可能是导师或领导)对于你提交的工作文稿有过多次的修改意见,而对于之前否决的版本你又需要留存,想着后续可以回顾之前的思路,或防止出现改了几版后又被要求用回最出版的局面….
慢慢的你的文件变成了这样:
- 初稿.docs
- 修改1.docs
- 修改2.docs
- 终稿.docs
- 终稿改.docs
- 终稿不再改.docs
- 最终真的真的不再改.docs
…
这时候问题就来了,这样的「改文件名存储法」真是糟糕透顶,单看文件名根本想不起之前改动了什么,有时甚至会误删文件而事后才想起其重要性。
想一想,如果有一个工具可以做到:
- 每次改动将项目完整的保存;
- 每次保存的历史注明了时间、作者以及简短的改动描述;
- 各个历史版本之间所修改的文件,可对比修改之处;
…
是不是很棒?这就是版本控制系统可以做到的,且不止于此。
Git
什么是 Git
Git 是一个免费和开源的分布式版本控制系统,旨在以速度和效率处理从小型到大型项目的所有内容。
Git 易于学习,占用空间小,性能快如闪电。它优于 SCM 工具,如 Subversion、CVS、Perforce 和 ClearCase,具有廉价的本地分支、方便的暂存区和多个工作流等功能。
下载 Git 及安装
你可以在 Git 的官网网站免费获取:Downloads – Git
除了在官方网站下载,还可以通过各种包管理工具进行安装 Git.
例如 macOS 用户在安装 Homebrew 后可以使用命令安装:
$ brew install git
Debian 及基于 Debian 的 Linux 用户可以使用 APT 进行安装:
$ sudo apt install git-all
RHEL、Fedora 等用户可以使用 DNF 安装:
$ sudo dnf install git-all
在成功安装后,使用命令:
$ git --version
如果能看到版本号就表示安装成功了。
Git 的最小配置
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中。
macOS 或 Linux 用户可以使用自带的「终端」、Windows 用户可以使用「Git Bash」或「Windows Terminal」,然后输入两条命令:
💡
$
符号表示这是一个在命令行界面中的命令,并不需要在输入命令时带上$
符号。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
这里的 --global
选项还有一些别的选项:
--local
:只针对某个仓库;--global
:针对当前用户的所有仓库;--system
:针对系统上所有用户的仓库;
--system
选项不常用,而一般需要使用选项 --global
配置适用于当前用户的所有仓库的用户信息,而针对某个特定仓库需要使用不同于 --global
所配置的用户信息时,使用选项 --local
。
在配置完成用户信息后,可以查看检查一下:
$ git config --list --global
如果配置错误了可以重新使用上述两条命令输入正确的用户信息,旧的用户信息就会被覆盖了。
获取帮助
在使用 Git 的命令时,可以在命令后加上 -h
选项获取相关的帮助信息,如获取配置相关的帮助:
$ git config -h
用法:git config [<选项>]
配置文件位置
--global 使用全局配置文件
--system 使用系统级配置文件
--local 使用仓库级配置文件
--worktree 使用工作区级别的配置文件
-f, --file <文件> 使用指定的配置文件
--blob <数据对象 ID> 从给定的数据对象读取配置
操作
--get 获取值:名称 [值模式]
--get-all 获得所有的值:键 [值模式]
--get-regexp 根据正则表达式获得值:名称正则 [值模式]
--get-urlmatch 获得 URL 取值:section[.var] URL
--replace-all 替换所有匹配的变量:名称 值 [值模式]
--add 添加一个新的变量:名称 值
--unset 删除一个变量:名称 [值模式]
--unset-all 删除所有匹配项:名称 [值模式]
--rename-section 重命名小节:old-name new-name
--remove-section 删除一个小节:name
-l, --list 列出所有
--fixed-value 在比较值与 '值模式' 时,使用字符串字面比较
-e, --edit 打开一个编辑器
--get-color 获得配置的颜色:配置 [默认]
--get-colorbool 获得颜色设置:配置 [stdout-is-tty]
类型
-t, --type <类型> 取值为该类型
--bool 值是 "true" 或 "false"
--int 值是十进制数
--bool-or-int 值是 --bool 或 --int
--bool-or-str 值是 --bool 或字符串
--path 值是一个路径(文件或目录名)
--expiry-date 值是一个到期日期
其它
-z, --null 终止值是 NUL 字节
--name-only 只显示变量名
--includes 查询时参照 include 指令递归查找
--show-origin 显示配置的来源(文件、标准输入、数据对象,或命令行)
--show-scope 显示配置的作用域(工作区、本地、全局、系统、命令)
--default <取值> 使用 --get 参数,当缺少设置时使用默认值