文章目录
一、git基本概念
(1)基本概念入手
git的基本操作就不介绍了,直接基本概念入手吧
先附上一张图
- 工作区:就是我们平时在本地打开的工作目录
- 版本库:就是工作目录下有一个
.git
的 文件夹,这个文件夹里包含的内容就是git 的版本库 - 暂存区:也叫索引,是存放在
.git
下的index
文件
可以看到右图中版本库中,我还标记了两个文件
HEAD
,这个文件里面是一个ref
/【游标】指向了git当前所在的分支object
,为git 的对象库,里面存放的是创建的各种对象及其内容【有兴趣的可以打开看看】
(2)git命令解析
1. git add
添加文件到仓库
- 暂存区【
.git/index
】的目录树更新; - 工作区中的新增/修改的内容被写到对象库【
.git/object
】中的一个新的对象中 - 这个新生成的对象的ID被记录在暂存区【
.git/index
】中
2. git commit
提交暂存区到本地仓库
- 暂存区【
.git/index
】的目录树写入版本库【.git
的文件夹】中 - HEAD所指向的目录树就是提交时【
git add
】暂存区的目录树 - 此时远程git仓库不会做任何更新
3. git reset HEAD
回退版本
- 暂存区【
.git/index
】的目录树被重写,被HEAD所指向的目录树所替换 - 工作区不受影响
4. git rm --cached <file>
删除工作区/暂存区文件
- 从暂存区【
.git/index
】删除文件 - 工作区不作修改
5. git checkout ./ git checkout --<file>
- 使用暂存区的全部/指定文件替换工作区的文件
- 会清除工作区中未添加到暂存区的改动
6. git checkout HEAD / git checkout HEAD <file>
- 使用HEAD所指向的分支中的全部/部分文件来替换工作区和暂存区中的文件
- 清除工作区中未提交的改动
- 清楚暂存区中未提交的改动
二、git基本操作
(1)git pull
git pull === git fetch + git merge FETCH_HEAD
做了两个事情
- 从远程仓库获取代码
- 合并本地版本
命令格式如下:
git pull <远程主机名> <远程分支名>:<本地分支名>
例子:
将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master. 取回 origin/master 分支,再与本地的 brantest 分支合并。
(2)git fetch
从远程获取代码库
该命令执行完后需要执行 git merge
将远程分支更新到你所在的分支。
例:
假设你配置好了一个远程仓库,并且你想要提取更新的数据,你可以首先执行:
git fetch [alias]
以上命令告诉 Git 去获取它有你没有的数据,然后你可以执行:
git merge [alias]/[branch]
以上命令将服务器上的任何更新合并到你的当前分支。