碰到了如下情形:
clone了别人的仓库,然后直接在master分支上做了很多commit,现在发现对方版本里有个bug,怎样才能只提交这个修复bug的commit,而不提交前面的commit?
最后我是这么做的。
1. 新建分支,用来保存当前自己的commit。
2. 在本地,git reset --hard cm
,cm里填你第一次clone的时候的版本。
3. 删掉远程仓库的master分支,这里你可以直接在web上操作,将默认仓库设置成刚刚新建的那个,然后就能删除了。也可以用git push origin :master
,不过这个方法会提示错误,而且我尝试解决未果,于是选择了前一种方法,反正也挺简单。
4. 删除完以后,将刚刚reset了的本地结果,git push origin master
,这样会自动在远程仓库建立一个新的master,而且内容跟你刚clone下来的时候是一样的。
5. 这时候,就可以修补bug,然后commit,提PR了。
所以啊,最好不要在master上直接动手脚,要干什么事情,都新建一个分支。所以第5步也不该这么做,更好的方法是基于master版本新建个bug分支。