git的回退和撤销操作
2017-04-27 10:38
399 查看
回退是git的使用中很常用的一个操作,如果清楚各个回退命令的作用,不仅大大加快代码回退的效率,还能避免代码回退造成的事故
1、git reset --hard [commit]
清空暂存和未暂存的更改 ,仓库重置到目标提交。
也就是说,使用该命令后,文件状态变为目标提交的状态
所以,可以:
git reset HEAD --hard来丢弃所有已暂存和未暂存的更改
2、git reset --soft [commit]
保留暂存和未暂存的更改,仓库重置到目标提交,目标提交之后的所有提交的变更都变为暂存状态。
也就是说,使用该命令后,文件的状态和使用前一样,变化的只是git相关的状态(暂存、HEAD等)
3、git reset --mixed [commit][filename]
(git reset的默认模式)
保留未暂存的更改,清空暂存的更改,仓库重置到目标提交,目标提交之后的所有提交的变更都变为未暂存状态。
也就是说,使用该命令后,文件的状态和使用前一样,变化的只是git相关的状态
所以,可以:
git reset HEAD [filename]来丢弃暂存的更改
使用git reset时请加倍小心,因为他可以在有更改没提交的情况下使用,若操作失误,有可能丢失没提交的更改 。若想撤销reset操作,可使用
git reflog找到相应的操作记录id,回退之,但是没提交的更改是找不回来了的。
4、git revert [commit]
生成一个新的提交来撤销某次提交,不会影响此次提交之前的 commit。
建议使用,生成新的提交可增强提交树的可读性
5、git checkout [filename]
丢弃未暂存的修改:
git checkout [filename](从暂存区取对应文件覆盖到暂存区)
丢弃已暂存和未暂存的修改:
git checkout [commit] [filename](清空未暂存的修改,从某个提交取对应文件覆盖到暂存区)
适用于不想回退整个提交,而是只回退某个(些)文件的情况
相关文章推荐
- git在未提交commit之前,撤销回退所有操作
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- Git使用本地仓库之基本操作--版本回退,后悔怎么办,撤销未提交的修改
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- 【转】如何在 Git 里撤销(几乎)任何操作
- 如何在 Git 里撤销(几乎)任何操作
- 如何在 Git 里撤销(几乎)任何操作
- 在commit之前撤销git add操作 (undo git add before commit)
- git中的撤销操作
- git 修改上次提交信息 与 撤销此操作.
- [Linux] Vim 撤销 回退 操作
- Git学习系列(三)版本回退和管理文件的修改及删除操作
- Git学习系列(三)版本回退和管理文件的修改及删除操作
- git diff和回退操作
- 辛星浅析git中的代码撤销与回退
- 第一次使用git,撤销git add操作 (undo git add before commit)
- 撤销git add操作
- git 撤销已经push上去的操作
- Git操作-版本回退