Git有三棵树
工作区、暂存区、Git仓库里面Head指针指向的最新版本的数据
Git管理的文件有三种状态
1、已修改
2、已暂存
3、已经条
GIt 常用命令
git init
将工作目录的文件放到Git仓库只需要两步
git add README.md
git commit -m "add a readme file"后面加上的是这次提交的说明
查看状态
git satus查看当前的状态
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
在master分支,但是为未“跟踪文件”跟踪文件“,所谓的未跟踪,指的是那些,
新添加的文件,但并没有增加到暂存区域的文件
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
如果不想让Git跟踪可以使用 git reset <filename>给你一次反悔的机会,将最近提交的文件恢
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
git checkout :将暂存区域的文件覆盖本地的文件
查看历史提交记录
git log 查看各个版本
下次学习第四集---
快照
git reset HEAD~ 该命令后面的波浪线表示当前版本的上一个版本(回滚到了第二棵树,暂存区域)
一个波浪线就是上一个,两个波浪线就是上两个版本。。。。
git reset HEAD~10 表示HEAD指向版本的前10个版本
$ git reset HEAD~
Unstaged changes after reset:
M LICENSE
gir reset --mixed HEAD~ 其实做了两步操作
第一步修改了第三棵树
-移动HEAD的指向,将其指向上一个快照
第二步修改了第二棵树
-将HEAD移动后指向的快照回滚到暂存区域
为了更灵活的操作三棵树, git为了rest操作提供了两个选项
一个叫做 --soft,
git reset --soft HEAD~ 相当于撤销一次错误的提交命令
----移动HEAD的指向,将其指向上一个快照
还有一个叫做 --hard
git reset --hard HEAD~ 他会做3步操作
第一步修改了第三棵树
-移动HEAD的指向,将其指向上一个快照
第二步修改了第二棵树
-将HEAD移动后指向的快照回滚到暂存区域
第三步修改第一棵树
-将暂存区的文件还原到工作目录 (所以该操作具有一定的危险性)
$ git reset --hard HEAD~
HEAD is now at f8dded8 add a REMADME FILE
git 还可以指定ID号进行回滚
回滚指定快照
git reset +快照ID(一般5个以上,前几个)
回滚个别文件
git reset 版本快照 文件名/路径
如果历史ID丢了怎么办?????????(嘿嘿不告诉你,自行百度)
下次学习第五集