Git(分布式版本管理工具)
文章对应教程:https://www.bilibili.com/video/BV1vy4y1s7k6
1. Git 概述
- Git 是一个免费的、开源的分布式版本控制系统。可以快速高效地处理从小型到大型的各种项目。Git易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
1.1 什么是版本控制?
- 版本控制是一种记录文件内容变化,以便将来****查阅特定版本修订情况的系统。
- **版本控制其实最重要的是可以记录文件修改历史记录,**从而让用户能够查看历史版本,方便版本切换。
1.2 版本控制工具都有哪些
1.2.1 集中式版本控制工具
CVS、SVN(Subversion)、VSS
-
集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
-
这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什
么。管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。 -
事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
1.2.2 分布式版本控制工具
-
Git、Mercurial、Bazaar、Darcs…
-
像Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
-
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
-
服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
-
每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
-
1.3 Git 简史
1.4 Git工作机制
1.5 Git 和代码托管中心
-
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
-
局域网中
-
GitLab
-
互联网中(广域网)
-
GitHub(国外网站)
-
Gitee 码云(国内网站
2. Git 安装
官网地址:Git 下载
- 1. 双击安装程序点击next
- 设置Git的安装位置
- 勾选Git 选项配置,推荐默认设置,然后下一步。
- Git 安装目录名,不用修改,直接点击下一步
- 选择 Git 的默认编辑器,建议使用默认的 Vim 编辑器,然后点击下一步。
- 选择默认分支名,勾选让 Git 决定,分支名默认为 master,下一步
- 修改 Git 的环境变量,选第一个,不修改环境变量,只在 Git Bash 里使用 Git。
- 选择可执行的ssh,默认即可
- 选择后台客户端连接协议,选默认值 OpenSSL,然后下一步。
- 配置 Git 文件的行末换行符,Windows 使用 CRLF,Linux 使用 LF,选择第一个自动转换,然后继续下一步。
- 选择终端的类型
- 选择 Git pull 合并的模式,默认即可,然后下一步
- 选择 Git 的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步。
- 其他配置,选择默认设置,然后下一步
- 最后一步实验室功能,技术还不成熟,有已知的 bug,不要勾选,然后点击右下角的 Install按钮,开始安装 Git。
- 点击 Finsh 按钮,Git 安装成功!
2.1 启动Git
右键任意位置,在右键菜单里选择 Git Bash Here 即可打开 Git Bash 命令行终端。
在 Git Bash 终端里输入 git --version 查看 git 版本,如下图所示,说明 Git 安装成功
3. Git 常用命令
命令 | 功能 |
---|---|
git config --global user.name 用户名 | 设置用户签名用户名 |
git config --global user.name 用户名 | 设置用户签名邮箱 |
git init | 初始化本地仓库 |
git status | 查看本地库状态 |
git add 文件名称 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
3.1 设置用户签名
- 基本语法
git config --global user.name 用户名
git config --global user.email 邮箱
- 代码演示
# 设置用户名为Bear
git config --global user.name Bear
# 设置用户邮箱为 Bear@qq.com
git config --global user.email Bear@qq.com
- 图文演示
-
设置的用户名会被存放到本机用户的目录下
-
使用命令查看设置的签名
PS: **签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。**Git 首次安装必须设置一下用户签名,否则无法提交代码。
3.2 初始化本地库
- 基本语法
git init
-
代码示例
-
在D盘下的demo文件夹中初始化本地库
Bear@Xans MINGW64 /d/demo
$ git init
Initialized empty Git repository in D:/demo/.git/ # 表示初始化了一个空的git仓库
- 结果查看
3.3 查看本地库状态
- 基本语法
git status
-
代码演示
-
查看D盘的demo仓库状态(空目录则显示未提交未跟踪状态)
Bear@Xans MINGW64 /d/demo (master)
$ git status
On branch master # 在主分支上
No commits yet # 表示还没有提交
nothing to commit (create/copy files and use "git add" to track) # 没有被提交和跟踪的文件
- 新增一个文件(1.txt)
Bear@Xans MINGW64 /d/demo (master)
$ vim 1.txt
# 添加以下内容
Hello China
Hello China
Hello China
- 再次查看仓库状态(检测到未被跟踪的文件)
Bear@Xans MINGW64 /d/demo (master)
$ git status
On branch master
No commits yet
Untracked files: # 显示未被跟踪的文件
(use "git add <file>..." to include in what will be committed)
1.txt
nothing added to commit but untracked files present (use "git add" to track)
3.4 添加到暂存区
3.4.1 将工作区的文件添加到暂存区
- 基本语法
git add 文件名称
- 代码演示
Bear@Xans MINGW64 /d/demo (master)
$ git add 1.txt
warning: LF will be replaced by CRLF in 1.txt. # 警告信息
The file will have its original line endings in your working directory
3.4.2 查看本地库状态
Bear@Xans MINGW64 /d/demo (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 1.txt # 被提交到暂存区的新文件
- 图文示例
3.5 提交到本地仓库
3.5.1 将暂存区的文件提交到本地库
-
基本语法