Git版本控制系统
Git
概述
目前世界上最先进的分布式版本控制系统。
版本控制系统 (Version Control System)
- 记录一个文件或若干个文件的内容变化,以便将来查阅特定版本修订情况的系统。
- 还可以将文件回溯到之前的某个状态,可以从内容中看出是谁提交的代码出了问题。
VCS的迭代
下面说一下VCS (版本控制系统) 的迭代
- 本地版本控制系统 ,在本地上传,与维护。
- 集中的版本控制系统 (Centerolized Version Control System) 所有人上传到一个一个服务器上。
- 分布式版本控制系统 (Distributed Version Control System) 有一个本地服务器,还有一个远端服务器,这样数据不容易丢失。
Git的特点
- 只有在提交代码或拉取代码的时候需要网路
- 直接记录快照,而非差异比较
- 所有操作基本都在本地
- 保证完整性
Git 一般只添加数据用
- 常规操作逻辑
file –> 提交到暂存区 –> 提交到本地仓库 –> 提交到远程仓库 提交到暂存区就是,当文件在移动过程中,会在暂存区保留一下,等提交完成后暂存区文件就没了。
比如 windows 移动文件时,从一个目录移动到另一个目录上,在移动过程中,会在本地生成一个保留文件,防止移动失败,导致数据丢失。
git 安装
- 准备
linux主机 IP: 192.168.100.203
开启后运行以下命令:
yum -y install git # 安装git
创建Git仓库:
mkdir /tmp/test # 创建本地仓库目录
Git仓库基本操作
- 初始化仓库:
[root@localhost ~]# cd /tmp/test/ [root@localhost test]# git init # 初始化本地仓库 初始化空的 Git 版本库于 /tmp/test/.git/ [root@localhost test]# ll -la 总用量 4 drwxr-xr-x. 3 root root 18 3月 10 16:26 . drwxrwxrwt. 14 root root 4096 3月 10 16:26 .. drwxr-xr-x. 7 root root 119 3月 10 16:26 .git # 目录里多出这个目录
- 查看仓库状态
[root@localhost test]# git status # 查看仓库的状态 # 位于分支 master # # 初始提交 # 无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
- 创建文件并保存到本地仓库:
[root@localhost test]# echo lmk > hello.txt [root@localhost test]# git add hello.txt # 将文件存储在暂存区 [root@localhost test]# git status # 查看仓库状态 # 位于分支 master # # 初始提交 # # 要提交的变更: # (使用 "git rm --cached <file>..." 撤出暂存区) # # 新文件: hello.txt # [root@localhost test]# git commit -m "first" # 将暂存区的文件存到本地仓库 # 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交 # 说明将会终止提交。 # 位于分支 master # # 初始提交 # # 要提交的变更: # (使用 "git rm --cached <file>..." 撤出暂存区) # # 新文件: hello.txt # # -m 设置标签,用来分辨文件 # "first" 标签名 随便填写
# 用 commit 之前 必须声明用户名和邮箱,否则无法提交到本地仓库。 [root@localhost test]# git config --global user.name "k" # 设置用户名 [root@localhost test]# git config --global user.email 1248287831@qq.com # 设置邮箱名 设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份: git commit --amend --reset-author
- 文件回溯: 在暂存区回溯
[root@localhost test]# echo 111 >> hello.txt [root@localhost test]# git add hello.txt [root@localhost test]# git status # 位于分支 master # 要提交的变更: # (使用 "git reset HEAD <file>..." 撤出暂存区) # # 修改: hello.txt # [root@localhost test]# cat hello.txt lmk 111 [root@localhost test]# git reset HEAD hello.txt # 把文件撤出暂存区 重置后撤出暂存区的变更: M hello.txt [root@localhost test]# git checkout -- hello.txt #返回hello.txt之前的内容 [root@localhost test]# cat hello.txt lmk
- 文件回溯: 在本地仓库回溯
[root@localhost test]# echo 222 >> hello.txt [root@localhost test]# git add hello.txt # 加入暂存区 [root@localhost test]# git commit -m "second" # 提交到本地仓库 [master 2164542] second 1 file changed, 1 insertion(+) [root@localhost test]# cat hello.txt lmk 222 [root@localhost test]# git log # 查看提交日志 commit 216454239076b6b5637e013b7b701905c9fff5af # 提交ID Author: k <1248287831@qq.com> Date: Tue Mar 10 16:59:19 2020 +0800 # 提交时间 second # 提交标签 第二次提交的 commit c3b610c18e1a8815fe12b051afe5ecd9c1061db2 # 提交ID Author: k <1248287831@qq.com> Date: Tue Mar 10 16:41:25 2020 +0800 # 提交时间 first # 提交标签 第一次提交的 [root@localhost test]# git reset --hard c3b610c18e1a8815fe12b051afe5ecd9c1061db2 # 指定first的commit信息,回溯到first状态 HEAD 现在位于 c3b610c first [root@localhost test]# cat hello.txt lmk
小结
这章先写到这里,继续往下写的话有点多了,和看笔记没什么区别,下一章写,git远程仓库:
- github
- gitlab
本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!