我公司开发流程是,先将代码上传到开发分支,在同一个上线时间的开发任务完毕后,将相应的commit通过cherry-pick把代码合并到测试分支,由于我刚入职,不熟悉流程,将两个上线时间不同的开发任务的代码作为一次commit上传了,这下可犯了难了,怎么把这一次commit的第一个上线时间的代码合并到测试分支呢?这时候,经过各种百度,知道了cherry-pick合并commit时只合并部分文件方法,做一下记录,以防万一。
由图可知,我修改了Sort.java文件和FinalizeEscapeGC.java两个文件,但我只想提交Sort.java文件,不想提交FinalizeEscapeGC.java文件,接着执行以下操作。
由图可以看到,经过reset后,再次查看修改的文件,在FinalizeEscapeGC.java文件的前面的M变红了,这代表已经将暂存区的文件去除了。
由图可以看到,在执行这行命令后,重新看状态,FinalizeEscapeGC.java文件已经彻底消失了。
注意:
当发现在查看状态时,有其他的文件存在,并且前面都是??的状态,这表示这是未跟踪文件,可以使用以下命令清除。
git clean -f如果想先看看会清除哪些文件,可以使用以下命令查看确认后再清除。
git clean -nf到这里,已经几乎完成了,只剩下最后一个push动作了。
图8 推送到测试分支至此,大功告成!成功在一个commit里,提交了Sort.java,放弃了FinalizeEscapeGC.java。
这个需求应该不算常用到,但毕竟也算是一个git的技巧吧,同时,根据公司的情况提交方式做一下调整,以我为例,在开发的时候,最好是每一个任务做一次单独的代码提交,这样不论是之后根据任务回溯代码,还是将开发分支合并到测试分支,都能够灵活的处理,也算是吃一堑,长一智吧。
参考博客:https://blog.csdn.net/b229911288/article/details/103608482
参考博客作者:少年元芳