这个需求很常见,比如说我用了一个git add .一股脑把所有修改加入stage,但是突然想起来文件a.txt中的代码我还没写完,不应该把它commithistory区,所以我得把它从stage中撤销,等后面我写完了再提交。

指令

$ git reset 一个或者多个文件

该命令的自然语言描述是:不改变work dir中的任何数据,将stage区域中的a.txt文件还原成HEAD指向的commit history中的样子。

风险等级:低风险。

理由:不会改变work dir中的数据,会改变stage区的数据,所以应确保stage中被改动数据是可以抛弃的。

 

git reset 进阶

git reset 是用于变更暂存区内容。Git reset 命令有三个参数:git reset –soft; git reset –mixed; git reset –hard;

1、–soft 这个只是把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变

2、–hard 这个是 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态

3、–mixed 这个是默认参数,把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变

git reset说明

故上面的指令的完整写法是

$ git reset --mixed HEAD 一个或者多个文件
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐