git 的新版本发生些许变化,这使得git help reset上的内容可能发生了变化
在了解相关命令和做法前,建议您先了解git管理下的文件的三种状态:
Working tree directory, staging area, and Git directory
target for undo operations
做撤销的行为一般是由于不小心将当前文件改乱了,进而想让工作区中的文件恢复到被修改之前.
undo modified files
当工作区workspace中的内容尚未add 到index时,您可以将index区中的内容调出来覆盖掉当前工作区的文件内容 如果是这样,用check命令即可(撤销workspace中的修改) git checkout fileName 一般来说,这个命令很够用了,一般我们没有完成一定程度的修改,是不会add到staging area中的.(而且,在把文件改乱了又返回的时候都还处在这个阶段)
undo add
但如果您不小心add到了staging area,那么可以正对某个文件利用git reset [HEAD] fileName来撤销 但是对于被改乱的文件似乎还是无能为力.(所以只是undo add 实用性还不是那么明显) 撤销提交到staging area
undo commit
git reset --soft <commit_id>
(通过移动HEAD指针实现) 但是这样依然作用不到working area 即,被改乱的文件还是得不到恢复
–mixed 一样不回复working area git reset --hard <commit_id> 能够恢复工作区的文件 但是没指定文件的话会误伤其他文件的
参考链接
指定文件版本回滚
实用性更强的,还是用checkout 您可以像这样回滚某个文件到早些版本 git checkout <commit_id> fileName 可以先利用git log fileName来查询某个文件的历史版本(提案在commit号),然后将其回滚 可以看到HEAD指针是不变的,但是文件版本回滚了(内容回滚) 当然其他文件不会受到影响 参考链接
|