场景
如果某天下午张三家里突然有事回家了,忘了提交今天写好的那个部门管理的功能,第二天过来接着继续写代码完成了另外一个员工管理的功能,然后一下子 git add --all .,将昨天和今天写好的代码一起都放入暂存区

突然,张三想到好像应该将这批代码分成两次提交,才能符合公司的规范啊!
实践
git add -i
此时需要先执行r如上命令,进入交互式模式

它会给你列出来当前暂存区里所有的文件和内容,以及没加入暂存区的文件和内容,还有一堆可以执行命令。根据各种指令以及选择文件,可以将暂存区中的部门管理功能对应的文件和代码,从暂存区里 unstage 出来。

根据提示,先选3,表示将要做的操作是把文件从暂存区里 revert 出来。选择要从暂存区里 revert 出来的文件,选中后该文件的前面会带有一个 “*” 标识。然后回车,可以看到部门管理相关的文件已经是 untracked 状态了。完成操作后选择7退出。
查看下此时 git 的 status

可以看到,部门管理相关的文件确实已经从暂存区移到了工作区。在暂存区里的文件只有员工管理相关的文件了。
此时先 commit 一次,将员工管理的文件 commit,再 add commit 即可将部门管理的文件 commit


通过这个技巧,就可以将暂存区里部分文件给挪出来,然后再执行 commit 操作,将代码分成多次来提交,使得每天写好的功能是一 个commit,跟公司的规范保持统一。
1935



被折叠的 条评论
为什么被折叠?



