目录
[4.git log](#4.git log)
1.什么是git
git是一个版本控制器,git会记录每次对文件的改动。
2.git的基本操作
2.1初始化本地仓库
创建一个文件夹,进入文件夹之后执行命令git init
执行完,使用ls -a命令查看隐藏文件,有一个.git文件说明初始化成功。
2.2配置git
使用git config 命令配置git
我们首先要配置的就是 name 和 email ,如果少了这两个配置,向远程仓库提交的时候就会报错。
git config user.name "你的远程仓库的用户名"。
git config user.email "你的远程仓库的email"。
配置好之后 使用 git config -l 查看配置文件
也可以在配置的时候加上--globla 选项,这样是就全局配置,只要创建仓库,就不用重新配置。
git config --global user.name "wys"
注意:配置的时候加上--globla 选项,那么在取消配置的时候也需要加上--globla选项。
git config --global --unset user.name 这样就删除了 user.name的配置
3.认识工作区/暂存区/版本库之间的关系
工作区:我们进程开发操作的区域。
暂存区:存储指向git对象的索引。
使用**git add [filename] [filename] [filename].......**命令即可更新暂存区的目录树。
或者使用**git add .**提交当前目录所有的文件
使用git status查看暂存区的状态。
有改变未提交:新的文件名 叫 testgit
再使用git commit -m "本次提交的细节" 命令提交到master分支。
一个文件发生了改变,新增1行。
4.git log
目前为止我们已将代码提交到本地的仓库了。
我们可以使用 git log命令查看我们提交的日志。
也可以使用 --pretty=online选项,更美观的查看日志。
这前面的一大串字符串是我们提交的版本号。
我们也可以多提交几个文件看看。
再查看日志
5.修改文件
git追踪的是文件的修改,而不是文件本身,他会记录下,哪个文件的哪一行被修改了。
我们堆testgit文件新增一行。
使用 git status命令。
工作去已经有文件被修改了,但是还没有被添加到暂存区。
还可以使用**git diff [filename]**命令,查看工作区和暂存区文件内容的不同。
这是unix通用的diff格式
a/代表修改前的文件名 b/代表修改后的文件名。
--- a/testgit 表示修改前文件的路径。
--- b/testgit 表示修改后文件的路径。
-1代表修改之前的行数是1。
+1,2 代表从1开始 到2结束这一行是新增的。
6.查看git文件
1.查看当前最新的版本的版本号
cat .git/refs/heads/master
这大串数字的前两位是文件夹的名称,后面的是文件的名字。
使用 git cat-file -p [版本号] 查看 当前版本。
我们可以更新一下版本,在查看一下。
7.版本回退
使用git reset命令进行版本回退。
git reset [--soft | --mixed | --hard] [HEAD]
--mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内
容,⼯作区⽂件保持不变.
--soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本.
--hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命
令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。
版本回退的原理
HEAD指针是指向当前版本,只需要将HEAD指针向后移动,就可以完成回退。
8.撤销修改
情况1:工作区的代码没有add,但没有commit
写代码的时候越写发现自己写的越狗屎,想回退到上版本,如果你写的代码很少那是无所谓,但是你已经开发很久了,你也记不清从哪里开始了。
是用git checkout -- [file] 命令,可以让工作区回退到上次 add或者 commit的版本。
情况2:工作区的代码已经被add
这时候可以使用,git reset --mixed HEAD的命令,这就可以回退暂存区的内容。
情况三:已经add,并且已经commit
这种情况直接使用 git reset --hard HEAD将 工作区,暂存区都回退到当前版本。
注意:这种情况只能是未提交到远端仓库这么做才有用。
9.删除文件
直接使用 git rm [file] 删除。
使用rm直接删除也可以,但别忘记 add 和 commit。