版本库的基础操作
版本库也可以称为仓库
, 也就是一个目录 , 这个目录里面的所有文件都被Git管理起来 , 每个文件的修改 删除等 , Git都能追踪
创建版本库
1 | #定位到需要创建仓库的目录下执行 |
执行以后就把这个目录变为git可以管理的仓库
该目录下就会多了一个**.git**目录 , 这个目录是git用来追踪管理版本的 , 勿手动修改
添加文件到版本库
1 | #添加全部暂存区和历史区不存在的或者有更改的.c文件 |
使用git status
可以查看当前版本库的状态
例如
这个版本库当中有01.txt是已经添加到版本库但是没有提交的新文件 ( 该文件当前的状态就是staged - 已暂存
)
使用git rm --cached 01.txt
可以从暂存库当中移除01.txt , 相当于是add的逆操作
02.txt是没有添加到版本库的文件
提交文件
提交操作针对的是暂存区当中的文件 ( 或者说是已暂存状态的文件 )
1 | #提交暂存区所有的内容到版本库 |
提交时可以直接使用-m参数来添加提交的注释
例如git commit -a -m "我是注释"
如果未添加 , 提交时则会自动调用vi编辑器来编辑提交注释信息
也可以修改core.edit来设定喜欢的编辑器
如果提交01.txt完毕以后 , 再次修改了01.txt
此时该文件的状态就是modified - 已修改
使用git add
可以将其添加到暂存区
比较差异
git diff
命令用于比较指定文件的差异
1 | #查看所有有变动的文件 |
查看提交历史记录
使用git log
可以按照提交时间列出所有的提交
1 | #仅显示最近x次的提交 git log -x |
format当中的占位符含义
选项 | 说明 |
---|---|
%H | 提交对象(commit)的完整哈希字串 |
%h | 提交对象的简短哈希字串 |
%T | 树对象(tree)的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象(parent)的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者(author)的名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 –date= 选项定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者(committer)的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期,按多久以前的方式显示 |
%s | 提交说明 |
撤销操作
重新提交
如果执行git commit
之后发现了漏掉了一个文件 , 再进行一次提交又显得多余
这时候可以使用amend进行重新提交
1 | git commit --amend |
取消暂存
执行了git add 之后 , 如果要进行撤销
( 与git rm作用类似 )
1 | git reset HEAD 03.txt |
但是reset还可以对已提交的内容进行版本的回退
1 | #回退当上一个版本 |
如果要回退当上上个版本就是HEAD^^
也可以使用简便写法git reset --hard HEAD~100
表示回退到100个版本之前
此时执行了回退 , 我们发现最后一次提交所做的修改已经没有了
如果还想找回来 , 可以执行git reflog
来查看操作记录 , 找到最后一次提交的版本号
执行以后发现是8725f93
于是执行git reset --hard 8725F93
即可再次恢复到最新版本
撤销修改
当文件被修改 , 但还没有git add到暂存区 ( 或者从暂存区当中撤销回到工作区也一样 )
1 | git checkout -- filename |
注意 : 该操作会导致修改彻底丢失 , 无法恢复