git 基本操作----git reset、log

我们可以用 rest来滚动git版本。使用log来查看本地仓库的版本

$ git log

 

 会给出对此仓库的所有操作。如果日志比较多,就无法显示完全,linux 翻页的常规操作:空格:下一页,p 前一页,q 退出

我们可以美化一下

git log --pretty=oneline

 

 则会在一行中打印出日志。还可以更简单一点:

git log --oneline

 

 还有一个常用的,查看所有日志

git reflog

 

我们可以使用reset设置当前的版本,以删除文件找回为例。

我们新建一个c.txt,并把它添加到仓库。

touch c.txt

git add c.txt

git commit -m "add c.txt"

#使用reflog查看
git reflog

 

 

 

然后我们删除 c.txt.并且提交到本地仓库。

 

rm c.txt

git commit -am "del c.txt"

 

 

我们使用 git reset --hard (指针位置) 就可以回滚。

git reset --hard bb9181d

 

 

这样我们删掉的c.txt就找回了。

 

我们注意到有个参数

--hard  :  同时修改  工作区  缓存区  本地仓库的文件内容

--mixed:  同时修改  缓存区  本地仓库的文件内容

--soft:     只修改本地仓库的文件内容

 

此外,如果我们有修改提交到缓存区(add),但是还没有提交到本地仓库(commit).我们可以直接reset,清空缓存区的内容

git reset HEAD

 

 如上图示,我们删掉了c.txt,并且add到缓存区,还没有commit到本地仓库。则。可以使用  git reset HEAD ,清空缓存区。

还可以 指定文件名,清空某个文件的缓存。

例如:

我们先改动文件 README 文件,内容如下:

# Runoob Git 测试
# 菜鸟教程 
 

hello.php 文件修改为:

<?php
echo '菜鸟教程:www.runoob.com';
echo '菜鸟教程:www.runoob.com';
echo '菜鸟教程:www.runoob.com';
?>

现在两个文件修改后,都提交到了缓存区,我们现在要取消其中一个的缓存,操作如下:

$ git status -s
 M README
 M hello.php
$ git add .
$ git status -s
M  README
M  hello.php
$ git reset HEAD hello.php 
Unstaged changes after reset:
M    hello.php
$ git status -s
M  README
 M hello.php

 

 

现在你执行 git commit,只会将 README 文件的改动提交,而 hello.php 是没有的。

$ git commit -m '修改'
[master f50cfda] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hello.php

 

可以看到 hello.php 文件的修改并未提交。

这时我们可以使用以下命令将 hello.php 的修改提交:

$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

 

 

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。

 

posted @ 2020-05-29 16:30  超级学渣渣  阅读(1186)  评论(0编辑  收藏  举报