git命令行下回退一个文件到上一个版本

git版本控制在ide中,很方便的回退一个文件,只需要git->revert就可以了。但是有时候,我们会在命令行下操作git。比如部署到生产环境的时候,我们不想打包,而是想通过git pull拉取远程仓库中的文件,但是偶尔需要修改一些文件,这时候如果需要再次拉取,那么就可能会出现冲突错误。

修改的文件处于仓库中最新版本和上次拉取的版本之间。这种问题在开发中如果团队分工出现问题,大家同时修改了一个文件,然后一个人先提交了,而另一个人想要提交或着拉取最新文件的时候就出现冲突了。

[root@buejee webapp]# git pull
Updating 874a967..670bcf6
error: Your local changes to the following files would be overwritten by merge:
        index.html
Please, commit your changes or stash them before you can merge.
Aborting

一般这种问题的解决办法就是恢复文件到上一个版本,然后再拉取最新的代码,然后将自己修改的部分加入到恢复之后并且拉取到最新的文件中,再提交就没有问题了,那么我们需要解决:如何恢复这个文件到上一个版本。

这种需要对单个文件进行回退的解决办法就是使用checkout,这里分为两种情况,默认,我们在命令行下进行的修改是不会把文件git add到缓存中去的,所以一般只需要:

git checkout index.html(文件名),默认情况下,直接git checkout就回退生效了。

还有一种情况,就是如果文件加入到了git缓存中,那么这个命令就不生效了。需要先执行git reset HEAD index.html。

[root@buejee webapp]# git reset HEAD index.html        
Unstaged changes after reset:
M       index.html

这里模拟这种情况:对index.html文件进行修改,增加一行hello。这时候文件就发生了改变。

 

把文件加入到缓存中,然后直接checkout,发现文件还是没有回退,说明checkout没有生效。 

 

当我们执行了git reset HEAD index.html之后,再次执行git checkout index.html,再次查看文件,发现文件恢复了。 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值