【Git学习】git add、git checkout、git commit、git reset命令
工作区~暂存区
git add是将文件添加进暂存区。
git add <文件名>//将文件加入暂存区。
git add . //将所有文件加入暂存区。
使用git status命令可以查看当前工作区和暂存区有哪些变化,当我们新建或者修改文件时,该文件就变成了untracked状态,即版本库未管理状态。 使用git add命令将文件加入暂存区,等待commit.
查看index索引内容:
从图中可以看出,git很智能的提示了我们,如果我们想把a.txt从暂存区移除,可以使用
git rm --cached <文件名>//将文件从暂存区移除
再次查看index文件,发现a.txt已经从暂存区移除。 而a.txt再次变成untracked状态。
假设:我们已经将a.txt添加进了暂存区,然后更改a.txt内容,如果修改的内容有错误,想撤销修改,我们需要怎么做呢?
git为我们提供了下面命令来撤销工作区的修改。
git checkout <文件名>//撤销工作区某文件的修改,使之与暂存区一致。
git checkout . //撤销工作区所有文件的修改,使之与暂存区一致。
如上图所示,我们更改了a.txt中的内容后,可以使用git checkout撤销修改。
暂存区~本地仓库
git commit命令将暂存区的内容添加到本地仓库。
git commit -m "提交信息"//将暂存区的内容保存到本地仓库,并填写提交信息。
git commit -v //进入vim模式编辑提交信息
情景一:本地提交的内容有问题,想撤销此次提交怎么做?
可以使用下面命令来撤销暂存区的提交。
git reset --soft HEAD^ //撤销本次提交,将本地仓库回滚到上一个版本,工作区和暂存区不变。
HEAD^表示上个提交版本,HEAD^^表示上上个提交版本,HEAD~n代表前面第n个版本
从上图可以验证,新的提交已经撤销,b.txt又是可提交的状态。而上次的提交并没有真正的删除,而是保存在objects目录下。当前只是将HEAD指针指向了上一次提交,git通过对比暂存区和本地仓库的区别发现b.txt不在本地仓库,所以该文件又可以重新提交。如下图所示:
情景二:文件更改了已经添加到了暂存区,如果想要撤销更改,怎么办?
当我们更改b.txt内容后并加入暂存区,可以使用git diff命令查看工作区、暂存区和本地仓库文件的区别,从上面可以看出,目前工作区和暂存区是更改后的内容,本地仓库是b.txt更改前的内容。 如果我们想撤销更改可以使用下面命令。
git reset --hard HEAD //使用当前提交来覆盖暂存区和工作区
git reset HEAD --mixed(默认)//该操作 可以 拉取最近一次提交到版本库的文件到暂存区
//并且该操作不影响工作区
从上图可以看到,工作区的更改已经被撤销会原来的内容。
上一篇: Squid代理服务器
下一篇: Hadoop初体验
推荐阅读
-
git checkout 命令使用详解
-
详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别
-
Git 常用命令 --- git reset命令
-
Git 常用命令 --- git reset命令
-
git push撤销、git commit 撤销、git add撤销、修改git提交信息
-
关于 git reset 命令几个常用参数的理解
-
【已解决】hexo博客 执行git add . 报changes not staged for commit 错误的解决方法
-
git checkout 命令使用详解
-
【Git学习】git add、git checkout、git commit、git reset命令
-
git reset checkout