git的使用
Git - 分布式版本控制
什么是Git
Git是一个分布式****版本控制系统。这听起来可能有点复杂,但让我们分解一下:
- 版本控制:就像给你的代码装上了时光机器。它会跟踪你做的所有更改。
- 分布式:它允许多个人在同一项目上工作,而不会相互干扰。
分布式与集中式
集中式:
集中化的版本控制系统 (Centralized Version Control Systems,简称 CVCS****)
SVN:权限控制;比较安全; 开源系统
协同工作的人们都通过客户端 连到这台服务器,取出最新的文件或者提交更新。
分布式:
分布式版本控制系统(Distributed Version Control System****,简称 DVCS****)。
客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本 地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
安装
访问下载页,https://git-scm.com/downloads
# 查看默认配置 |
概念
三种状态
Git 管理的文件有三种状态:已提交(committed)、已修改(modified) 和已暂存(staged)
已修改表示修改了文件,但还没保存到数据库中(也就是git本地仓库中)。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
已提交表示数据已经安全地保存在本地数据库中。 只有提交了的东西才是永久保存。其余都是临时状态,临时的东西一不小心就丢了
三个分区
工作区、暂存区以及 版本库。
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
- 注意:暂存区和版本库都在.git文件夹中,由git统一维护
两类文件
工作目录下的每一个文件都不外乎这两种状态:已跟踪(tracked) 或 未跟踪(untracked)。
- 已跟踪的文件是指那些被纳入了 版本控制的文件,也就是 Git 已经知道的文件
- 未跟踪的文件就是除了已跟踪的剩下所有文件;
基本用法
git init . |
时光机
git add hello.txt |
git reset --hard HEAD^ |
--hard
参数
--hard
会回退到上个版本的已提交状态--soft
会回退到上个版本的未提交状态--mixed
会回退到上个版本已添加但未提交的状态。
现在,先放心使用--hard
。
穿梭未来
我们刚才回到过去,此时检查git仓库提交记录
1. 你会发现,居然没有了第四次提交; 21世纪回到19世纪,来的时候好好的!然后回不去了! |
远程仓库
代码只在本地,即使有历史记录,有数据。哪天本地电脑坏了。硬盘炸了。数据将不可恢复。
我们可以把本地的数据,给远程保存一份
git remote add origin https://gitee.com/leifengyang/mygit-demo1.git |
推送数据给远程
第一次推送使用 -u 参数;会把所有数据都推送上去并且本地master分支和远程master分支进行绑定
git push -u origin master |
# 从远程读取数据 |
# 跳过暂存区,直接提交 |
# 1. 创建 1.txt 和 2.txt 文件 |
撤销修改
# 1. 给 hello.txt 中添加了新内容 |
# 1. 给 hello.txt 中添加了新内容 |
分支基础操作
# 1. 创建 名为 testing 的分支 |
# 3. 切换到 testing 分支 |
git checkout master |
# 1. 先来到master |
git branch -d testing |