Git 指引
一. Git基本介绍
在Git基本命令操作介绍前,先介绍一下简略的介绍一下Git。大佬可以直接移步下面指令部分。
1. Git是什么
Git 是一个开源的分布式版本控制系统,可以协助使用者记录代码版本。
2. Git作为分布式管理工具Git 与 传统集中式管理工具SVN 区别点
- Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
- Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
- Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
- Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
- Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
3.Git 工作区,缓存区与版本库
工作区:代码编写进行的区域
暂存区:一般存放在 .git 目录下的 index 文件,我们把暂存区有时也叫作索引(index)
版本库:工作区有一个隐藏目录 .git,存放着Git 版本库信息
下图可以看到三者之间的操作关系,左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区,标记为 “master” 的是 master 分支所代表的目录树,可以帮助你理解下面的命令操作。
二. Git Bash本地仓库常用命令
个人基本信息配置和查看
下文中所有的name.type
为文件名称.类型
1. 配置账户邮箱(gitHub或gitee)
#设置全局用户名
git config --global user.name xxx
#设置全局用户邮箱
git config --global user.email xxx@qq.com
2. 查看账户邮箱
#查看列表
git config --list
#查看姓名
git config user.name= xxx
#查看邮箱
git config user.email= xxx@qq.com
3. 创建git本地仓库
#在你点击的路径初始化一个本地仓库
git init
#成功提示 : inialized empty Git repository in <* 你的路径 *>
4. 查看git状态
一般来说会显示需要提交的文件(uncommited)1和未追踪的文件(untracked)2
git status
5. git操作日志
# 显示此仓库的操作日志 最近三次修改记录
git log
#显示当前及之前的版本号
git log --decorate --graph --oneline --all
#将版本历史显示为一行, 历史版本号全部显示
git log --pretty=oneline
#将版本历史显示为一行, 历史版本号部分显示
git log --pretty=oneline --abbrev-commit
#查看分支合并图
git log --graph
6. 添加git文件到暂存区
当对工作区修改或新增的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改或新增的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中就完成了文件上传到暂存区的操作。
git add <name>
7. git提交文件
git commit -m "Submit comments this time"
每次提交都必须要填写说明注释,也就是双引号内内容必须填写
8. git删除文件(夹)
git rm和直接删除的区别在于git rm会将此文件的操作记录删除,而直接删除仅仅是删除了物理文件,没有删除和此文件相关的记录。git rm后会在版本库产生区别(有操作日志),而直接删除没有。
#删除文件
git rm name.type
#删除文件夹
git rm -r foldernName
#可以用下面两种操作在版本库中删除文件:
git rm name.type => git commit -m 'Submit comments this time'
rm name.type => git commit -am 'Submit comments this time'
注意:命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
9. 暂存区撤销操作
工作区修改了文件,而且执行了add,但还没执行commit,暂存区还是可以撤销的。
#撤销git缓存区中某个文件的操作
git reset HEAD name.type
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
10. 工作区还原操作
回退工作区中某个文件在最后一次提交后的所有操作,但不会丢失暂存区的操作,本质上就是用版本库中最新版本覆盖工作区内容,无论工作区的变动全部还原。
#将工作区的文件重置为版本库中最新的版本
git checkout -- name.type
11. 工作区版本回退
与前一个操作,区别就是执行范围,本命令是工作区内所有文件回退,从第一部分中的图片中可以看得到 HEAD
实际是指向 master 分支的一个指针。执行版本退回后,本地工作区的内容会自动和回退到的版本库版本的内容保持同步。
#回退至一个版本
git reset --hard HEAD^
#以上面的类推,回退两个版本前
git reset --hard HEAD^^
# 回退到 af8t66a9 版本号 的版本
git reset --hard af8t66a9
三. Git 在Github和Gitee中的常用命令
未完待续