您的位置:首页 > 其它

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]
(清空未暂存的修改,从某个提交取对应文件覆盖到暂存区)

适用于不想回退整个提交,而是只回退某个(些)文件的情况

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: