目录
一、git介绍
1、git的工作区域
2、git中文件的四种状态
二、常用命令
1、基础命令
2、提交类命令
3、删除类命令
4、分支类相关命令
5、 查看类相关命令
6、撤销类命令
一、git介绍
1、git的工作区域
在Git中,有四个工作区域:工作区域(Working Directory)、暂存区(Stage/Index)、本地仓库(Repository)、远程仓库(Remote Directory)。如下图:
每个区域的作用如下:
- 工作区(Working Directory):当前项目的目录,其中包含了正在编辑的文件和子目录。在Git中,工作区并不属于Git版本控制系统的一部分,因此Git不会主动跟踪工作区中的文件变化。
- 暂存区(Staging Area):也称为索引(Index),是Git版本控制系统中用于暂存文件更改的区域。当使用git add命令将修改的文件添加到暂存区后,Git就会开始跟踪这些文件的更改,并准备将这些更改提交到本地仓库。
- 本地仓库(Local Repository):是指存储在本地计算机上的Git版本库,其中包含了项目的完整历史记录。当使用git commit命令将暂存区中的文件更改提交到本地仓库时,Git会将这些更改保存到本地仓库中。
- 远程仓库(Remote Repository):是指存储在远程服务器上的Git版本库,通常是用于协作开发的。通过git push命令将本地仓库中的代码推送到远程仓库中,或使用git pull命令将远程仓库中的代码拉取到本地仓库中。
当我们对项目中的一个文件进行修改时,Git会将这些更改保存在工作区中。如果需要将这些更改提交到本地仓库中,则使用git add命令将更改添加到暂存区,然后使用git commit命令将暂存区中的更改提交到本地仓库中。如果与其他人协作开发项目时,可以将本地仓库中的更改推送到远程仓库中,也可以将远程仓库中的更改拉取到本地仓库中。在这个过程中,工作区、暂存区、本地仓库和远程仓库分别扮演了不同的角色,共同构成了Git版本控制系统的核心框架。
2、git中文件的四种状态
git中文件有四种状态:未跟踪(Untrack)、未修改(Unmodified)、已修改(Modified)、已暂存(Staged)。
各状态描述如下:
- 未跟踪(Untrack):此文件在文件夹中但并没有加入到git库,不参与版本控制,通过git add状态变为Staged。
- 未修改(Unmodified):文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处:如果被修改,而变成Modified;如果使用git rm移除版本库,则成为Untrack文件。
- 已修改(Modified):仅仅是修改,并没有进行其他操作,这个文件也有两个去处:如果通过git add可进入Staged状态;如果使用git checkout则丢弃修改内容,返回Unmodified状态,这个git checkout即从库中去除文件,覆盖当前修改。
- 已暂存(Staged):通过 git commit 将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodified状态,执行git reset HEAD fileName暂存,文件状态为Modified。
二、常用命令
1、基础命令
命令 | 说明 |
---|---|
git --version | 查看git版本 |
git config --global user.name 用户名 | 设置用户名 |
git config --global user.email 密码 | 设置密码 |
git config --global --list | 查看全局配置 |
git init | 初始化本地仓库 |
git status | 查看仓库的状态 |
git clone | 将远程版本库拷贝到本地,创建一份独立的本地版本库,git 可以接受 http 和 ssh 两种协议的地址 |
2、提交类命令
命令 | 说明 |
---|---|
git add | 添加文件到暂存区。可以使用通配符,例如: git add *.java,也可使用目录,例如:git add . |
git commit | 提交(只提交暂存区中的呢内容,不会提交工作区中的内容) |
git push | 将本地库内容推送到远程版本库 |
3、删除类命令
命令 | 说明 |
---|---|
git rm readme.txt | 不但从暂存区中删除,同时删除物理文件 |
git mv a.txt b.txt | 把 a.txt 改名为 b.txt |
git rm --cached readme.txt | 只从暂存区中删除,保留物理文件 |
4、分支类相关命令
命令 | 说明 |
---|---|
git branch dev | 创建分支 |
git branch -d dev | 删除分支 |
git checkout dev | 切换分支 |
git merge dev | 合并分支 |
git branch | 查看所有分支 |
git fetch | 同步本地库和远程库的分支 |
5、 查看类相关命令
命令 | 说明 |
---|---|
git log | 查看提交日志 |
git diff | 对比工作区和暂存区文件的差异 |
git diff --cached | 显示暂存区(已 add 但未 commit 文件)和最后一次 commit (HEAD)之间差异 |
git ls-files --stage | 检查保存在暂存区 的文件 |
6、撤销类命令
命令 | 说明 |
---|---|
git reset --soft | 仅仅移动当前 Head 指针,不会改变工作区和暂存区的内容 |
git reset --hard | reset 的默认参数,移动 head 指针,改变暂存区内容,但不会改变工作区 |
git reset --mixed | 当前 head 指针、工作区和暂存区内容全部改变 |