今天一个情境下为,我们在master创建一个有bug的文件,而后在创建一个分支(stable 1.x),此时此分支与master是同步的,而后我们在master在创建一个新的文件,此时很明显我们的分支是落后master,且两者都带有个bug的文件,此时我们如果各别去修复会很麻烦。且修复后两者会产生不一样的commit,导致两者前面部分并未同步,我们所希望的是能达到在不增加且破坏原本的commit前提下,能进行修改有bug的commit即可
。
而我们先至master分支将有bug的文件给处理(vim 文件名)好
后,再利用git add * => git commit -m "bug fix by jojo" => git push origin master,此时远端项目看到commit已增加,bug也已经修复,那此时我们也将修复好的bug套用到也有同样bug的分支(stable 1.x),我们可以直接用merge,但这样不太好
,因为我们在master的bug创建之后还有其他的一些操作
,这样都会merge到其分支,会多一些不必要的commit,
所以其实我们只需要修复bug的这个commit。
首先在master git log,複製修复bug commit的hash value
,而后切换到分支
(stable 1.x),并输入 git cherry-pick (commit hash value)
后,在git log,发现已经多出一个修复bug的commit,而后我们git push origin stable 1.x 给push到远端,去check也发现commit已经确实增加,而且没有多其他的commit。