如果你曾经经历过“报告-最终版”、“报告-究极进化版”、“报告-打死也不改了版”的噩梦那你一定能理解版本控制的重要性。Git就是解决这个问题的神器。作为开源的分布式版本控制系统Git 是程序员日常开发的必备工具其核心价值在于高效管理文件版本、支持多人协同开发还能轻松实现版本回退、撤销修改等操作。一、Git是什么为什么需要它1.1 问题场景你是否有过这样的经历写文档时为了防止丢失或改错不断复制新文件报告-v1.docx报告-v2.docx报告-v3.docx报告-确定版.docx报告-最终版.docx报告-究极进化版.docx文件越来越多你渐渐忘了每个版本改了什么。想回到某个旧版本简直大海捞针。写代码也是一样项目文件成千上万如果靠手动备份根本不可行。随着版本的不断增多维护好版本是很有挑战的 。因为各自版本修改的内容需要记录起来方便我们快速定位并且查阅1.2 版本控制器登场版本控制器【记录每次的修改以及版本迭代的一个管理系统】就是专门解决这个问题的工具。它可以记录一个文件的历史版本让你随时查看改动、回退到任意时间点还支持多人协作。Git是目前最主流的版本控制系统由Linux之父Linus Torvalds开发。它免费、开源、高效几乎所有开发者都在用。注意Git能跟踪文本文件如代码、txt、配置文件的每一次改动但对于图片、视频等二进制文件只能记录文件大小变化无法知道具体改了啥。Git 的核心特性 注意事项支持管理电脑上所有格式文件对开发人员而言核心用于管理软件开发的源代码文件Git 只能跟踪文本文件的改动如 TXT、网页、程序代码能精准显示修改位置比如第 5 行加了某个单词图片、视频等二进制文件Git 仅能管理其版本知道文件大小变化但无法跟踪具体内容修改。二、Git安装Git可以在Linux、Mac、Windows上运行。下面介绍常见系统的安装方法。2.1 Linux-CentOS以 CentOS7.6 为例步骤 1检查系统是否已安装 Gitgit若输出-bash: git: command not found表示未安装执行下一步。步骤 2安装 Gitsudo yum -y install git步骤 3验证安装 查看版本git --version输出版本号即安装成功如git version 1.8.3.1。2.2 Linux-Ubuntu以 Ubuntu20.04 为例步骤 1检查系统是否已安装 Gitgit若输出Command git not found, but can be installed with:表示未安装。步骤 2安装 Gitsudo apt-get install git -y步骤 3验证安装 查看版本git --version2.3 WindowsWindows 平台安装可参考教程链接https://www.bilibili.com/video/BV1hf4y1W7yT?p3vd_sourceb57c3f3e8a7507d4af7322c28f05fdbc按照视频步骤操作即可安装完成后可在 CMD/PowerShell 中执行git --version验证。三、创建Git本地仓库3.1 什么是仓库仓库repository就是Git进行版本控制的目录。你想对哪些文件进行版本管理就需要先创建一个仓库。3.2 初始化仓库在你想管理的项目目录下执行git init执行后当前目录下会多出一个.git隐藏文件夹。这个文件夹就是Git的“大本营”里面存储了所有版本历史、配置等信息。千万不要手动修改或删除这个文件夹否则仓库就坏了。3.3 配置Git安装Git后第一件事是设置你的用户名和邮箱。这些信息会出现在每次提交记录中让别人知道是谁改的。git config --global user.name 你的名字 git config --global user.email 你的邮箱example.com--global表示全局配置这台电脑上所有仓库都使用这个信息。如果你想让某个仓库使用不同的名字/邮箱可以去掉--global并在那个仓库里单独配置。查看配置git config -l删除配置git config --global --unset user.name git config --global --unset user.email四、理解工作区、暂存区、版本库4.1 三个区域工作区就是你电脑上能看到的目录比如/home/zs/gitcode你在里面创建、修改、删除文件。暂存区也叫index位于.git/index文件中。它是一个临时区域你先把改动添加到暂存区之后才统一提交到版本库。版本库就是.git目录里面存储了所有历史版本。当你执行git commit时暂存区的内容才被正式保存到版本库中。Git 初始化时会自动创建版本库的唯一默认主分支 master以及指向 master 分支的指针HEAD对工作区的文件进行新建 / 修改后执行git add命令会将文件的改动更新到暂存区执行git commit命令会将暂存区的所有内容正式写入版本库并更新 master 分支和 HEAD 指针仅在工作区新建 / 粘贴文件不属于 “向仓库添加文件”必须通过git add git commit才能让文件被 Git 版本库管理。简单总结工作区写代码 → 暂存区做暂存 → 版本库存版本。五、Git 基础操作5.1添加文件与提交版本git add的常用用法git add file1 file2添加指定文件git add dir/添加指定目录包括子目录git add .添加当前目录下所有改动包括新增、修改、删除5.2 提交暂存区内容到版本库git commit -m commit my first file-m后面跟的是本次提交的说明信息一定要写清楚改了什么方便以后查看。执行后Git会告诉你本次提交的摘要[master (root-commit) c614289] commit my first file1 file changed, 2 insertions()create mode 100644 ReadMe5.3 一次提交多个文件$ touch file1 file2 file3 $ git add file1 $ git add file2 $ git add file3 $ git commit -m add 3 files这样三个文件都被提交了。5.4 查看提交历史使用git log查看历史记录如果想更简洁地看加上--prettyoneline那一长串十六进制数字就是commit id版本号是Git根据内容用SHA1算法计算出来的唯一标识。六、.git 目录index就是暂存区git add后内容更新在这里。HEAD指向当前分支的指针。查看它$ cat .git/HEAD ref: refs/heads/masterrefs/heads/master保存master分支当前指向的commit id。$ cat .git/refs/heads/master 23807c536969cd886c4fb624b997ca575756eed6这个id就是最新的提交。objects/存放所有文件内容、提交对象、树对象等。每个对象以哈希值的前两位作为文件夹名后38位作为文件名。