【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(默认)//该操作 可以 拉取最近一次提交到版本库的文件到暂存区 
                         //并且该操作不影响工作区

从上图可以看到,工作区的更改已经被撤销会原来的内容。 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值