四、将history区的文件还原到stage区
这个需求很常见,比如说我用了一个git add .一股脑把所有修改加入stage,但是突然想起来文件a.txt中的代码我还没写完,不应该把它commit到history区,所以我得把它从stage中撤销,等后面我写完了再提交。指令$gitreset一个或者多个文件该命令的自然语言描述是:不改变work dir中的任何数据,将stage区域中的a.txt文件还原成HEAD指向的commit hist
这个需求很常见,比如说我用了一个git add .
一股脑把所有修改加入stage
,但是突然想起来文件a.txt
中的代码我还没写完,不应该把它commit
到history
区,所以我得把它从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 --mixed HEAD 一个或者多个文件
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)