git回退版本
2017-06-04 20:03
211 查看
git的文件状态说明
git checkout -- files
把文件从暂存区域或历史记录中复制到工作目录,用来丢弃本地修改。
git reset -- files
用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件。
git reset [option] commitid
用来撤销历史记录,option选项–soft,–hard,–mixed。
–soft只影响历史记录;
–mixed影响历史记录,暂存区;
–hard影响历史记录,暂存区,工作目录;
实例说明
假如git项目中有三个文件a.txt,b.txt,c.txt,目前处于已提交状态当前a.txt的内容为
a.txt is a git file
1. 回退修改的文件(未add)
编辑a文件后a.txt is a git file, i found something is wrong
发现写错了,想撤回到未修改之前,执行命令
git checkout -- a.txt
a.txt的内容重新变成了
a.txt is a git file
2. 回退已add到暂存区的文件(未commit)
继续修改a.txt,内容最终为a.txt is a git file, i want commit it
执行命令
git add a.txt
突然任性不想提交这个内容了,怎么办
回退执行命令
git reset --hard
a.txt的内容重新变成了
a.txt is a git file
这里有一个问题,假如同时修改了a.txt,b.txt两个文件,执行上面的命令也会把b.txt回退,如果这种情况可以:
git reset只会清空暂存区,并不影响工作目录
git checkout -- a.txt从历史记录把a.txt复制到工作目录,就可以单独回退a.txt了
3. 回退已commit的文件
当天小酌了一杯,不小心把a.txta.txt is a git file, i want commit it
提交了。
git add a.txt git commit -m "a.txt commit"
回退执行命令
git reset --hard HEAD~1
谢天谢地,a.txt又回到了
a.txt is a git file
这里同样有一个问题,假如同时提交了a.txt,b.txt两个文件,执行上面的命令也会把b.txt回退,如果这种情况可以:
git reset HEAD~1历史版本回退,历史版本复制一份到暂存区,并不影响工作目录
git checkout -- a.txt从暂存区把a.txt复制到工作目录
最后把b.txt重新提交下
git add b.txt git commit -m "回退a.txt"
如果不想回退了,回到回退之前的版本
查看回退之前的版本号commitid
git reflog假如为如6558aa6
回到回退之前的版本
git reset --hard 6558aa6
回退中间某些提交
例如 E—F—G—H—I—J topicA,回退G的这次提交记录,可以执行git rebase --onto F H J
4. 回退到某个时间段
git checkout `git rev-list -n 1 --before="2017-08-27 13:37" master`
相关文章推荐
- 第02天GIT:(05):GIT命令的其他使用(起别名_删除文件_查看版本号版本_版本回退
- git干货系列:(三)我提交错了我想撤销或者回退版本
- git 版本回退之关于git reset --hard 和 --soft区别
- Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库
- git 版本回退
- Git学习笔记(2)——版本的回退,和暂存区的理解
- git学习之旅(四)——回退版本
- git回退某一个版本的某个文件
- Git使用本地仓库之基本操作--版本回退,后悔怎么办,撤销未提交的修改
- Git 版本回退问题详解
- git使用:如何进行版本回退或只是修改已提交的commit
- git学习笔记之版本回退
- Git学习与使用2-版本库创建修改回退
- Git基础之(四)——时光穿梭机——版本回退
- Git 版本回退1
- git版本回退
- git 回退单个文件到指定版本
- git版本回退
- git版本回退的一个问题
- 【git】远程仓库版本回退方法