大多数的新手在新接触git时都会出现这样的问题。代码写完了,提交到dev分支进行测试。一高兴忘记切回来,继续在dev分支开发,写完之后提交时猛的发现,我靠,我怎么在dev上面写代码,此时内心必然是一阵骚乱。不要方!
- 来,复现车祸现场
-
git checkout feature_1 touch a.txt git add a.txt git commit -am "create a.txt" git checkout dev git merge feature_1 git push origin dev touch b.txt git add b.txt git commit -am "create b.txt" -- git checkout 好像不对
-
理论上我们创建第二个文件应该是在feature_1分支,结果不小心把代码写在了dev分支提交了。此时我们要把这一次的提交撤回,但是代码又要保存下来并且移植到feature_1分支
- 来,上代码
- git log ## 此时在dev分支
-
git checkout feature_1 ##复制 commit 内容 切换分支到feature_1分支
- git cherry-pick 35af160a63bff3654b9e1d434b17e77f3ecea0ef
- cherry-pick可以将其他分支的提交合并到当前分支
- 代码已经移植过来了。剩下的就是撤销dev代码的提交了
- git checkout dev
- git revert 35af160a63bff3654b9e1d434b17e77f3ecea0ef
至此问题都解决了