有时候我们需要将某一个commit中的部分改动提取出来,然后放入一个新的commit中,可以怎么做呢?
我们举一个简单的例子:
假设说commit_1中有5个文件修改分别叫做A, B, C, D, E.
情况1:
然后想将A文件作为一个单独的commit,剩下的四个文件作为另一个单独的commit,可以这样做:
首先将commit_1的改动重新还原到工作区。
git reset --mix commit_1
然后
git add A
最后在git commit即可。
接下来将B,C,D,E都add,commit形成第二个commit。
情况2:
然后想将A, B, C, D文件作为一个单独的commit,剩下的一个文件作为另一个单独的commit,可以这样做:
首先将commit_1的改动重新还原到暂存区(stage区)。
git reset --soft commit_1
然后将E文件的改动从暂存区除掉,或者说将本版库中的E文件覆盖到暂存区中的E文件,但是不覆盖工作区的E文件。
git reset -- E
这时候就剩下了A, B, C, D四个文件在暂存区。直接commit即可形成第一个commit。
然后git add E和git commit形成第二个commit即可。
原文:http://blog.csdn.net/hongchangfirst/article/details/77506694
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst