如何通过 Git 将同一个文件的里多个修改 add 到不同的 commit 中
Kim 正在改着某个 xxx bug,突然发现有个变量名拼错了,于是顺手改掉了。最后将 bug fix 和这个 rename 一起提交了。
以上这种“将不相关的修改在一个 commit 中提交”的场景,我们在开发中经常会碰到,然后几个月后看代码,会疑惑为什么 xxx bug 会涉及到改变量名 🤔
这种情况也不能怪程序员,继续说上面的例子,如果要干净的提交代码,一种方法是把之前 bug fix 的代码 Ctrl-Z,然后先修改变量名提交;另一种就是记住变量名的位置,先把 bug fix 完,提交后回头改变量名。以上两种方法,哪种都挺麻烦 —— 没错,麻烦是造成代码混淆着提交的很大原因之一。
不妨试试通过 git add -p path/to/file
这条命令来解决上述问题。-p
通过所谓的 Staging Area,能让你在一个文件里的多个修改里选择自己需要的修改 add。
对于上面的例子,我们可以同时改完 bug、改完变量名,然后执行 git add -p
,这时会有类似下面的
该命令会一个个罗列出文件中的所有修改,对于每个修改你可以选择(注意红框部分)—— 接受(加入这次 add)或拒绝(排除这次 add),这样我们就能尽量保证每个 commit 的干净了。
参考资料: