文章目录
参考资料
1、Git的一些概念
1.1、整体框架
WorkSpace
:工作区,就是平时存放项目代码的地方Index/Stage
:暂存区,用于临时存放改动,事实上它只是一个文件,保存即将提交到文件列表信息Local Respository
:本地仓库,就是安全存放数据的位置,这里面有提交到所有版本的数据。其中HEAD指向最新放入仓库的版本Remote
:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
本地的三个区域确切的说应该是git仓库中HEAD指向
的版本:
Directory
:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。WorkSpace
:需要通过Git进行版本控制的目录和文件
,这些目录和文件组成了工作空间。.git
:存放Git管理信息的目录,初始化仓库的时候自动创建。Index/Stage:
暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。Local Repo:本地仓库
,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
Stash:隐藏
,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
1.2、工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
2、基本操作
2.0 、库中文件的状态
2.1、创建版本库
工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
2.1.1、本地仓库搭建
1、创建全新的仓库,需要用GIT管理的项目的根目录执行:
# 在当前目录新建一个Git代码库
$ git init
2、执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
2.1.2、克隆远程仓库
1、另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地!
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url] # https://gitee.com/kuangstudy/openclass.git
2.2、添加add以及修改内容
添加文件到Git仓库,分两步:
- 使用
git add <file>
,注意,可反复多次使用,添加多个文件; - 使用命令
git commit -m <message>
,完成 - 每次修改,如果不用
git add
到暂存区,那么就不会加入到commit
中
2.3、本地版本回退以及前进操作
- 要随时掌握工作区的状态,使用
git status
命令。 - 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
Head指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用git reset --hard commit_id
- 穿梭前,用
git log
可以查看提交历史,以确定要退回到哪个版本 - 要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本吧
2.4、撤销更改
1.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
2、当你不但改乱了工作区某个文件的内容,还添加到了暂存区时
,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
3、已经提交了不合适的修改到版本库时,想要撤销本次提交
,参考版本回退一节,不过前提是没有推送到远程库。
2.5、删除文件
- 确实要从版本库中删除该文件,那么就用命令
git rm
删除掉,并用git commit
- 删错了,因为版本库里还有,所以可以很轻松的把误删的文件恢复到最新版本
git checkout -- test.txt