场景
本地有commit过(版本标识为c1),代码可以编译过,然后合并服务器代码,先
git fetch
命令从服务器拉取代码,调用:
git rebase
将服务器分支合并到本地master分支。
现在有个问题是,有坑神上传了编译不过的代码,而且他暂时而无法搞定,没办法,我只能通过;
git reset --hard 版本哈希
将代码还原到坑神上传的有错的版本(标记为R1)的前一个版本(标记为v1),此时是编译过的,但我提交的代码不见了,现在得想办法将我提交的代码合并到v1,经询问度娘有如下方案(参考Git合并特定commits 到另一个分支),调用:
git cherry-pick c1的哈希
即可实现将c1合并到v1。
总结和思考
1.本地应该有一个服务器的临时分支(或者缓存),其保持的是你最后一次pull或者fetch的服务器版本状态,所以你执行git rebase后,会将这个临时分支合并到本地的master分支;
2.如果使用git reset --hard 回退版本,则回退版本的前面的版本应该也会保存一个临时分支,所以你在调用git reset --hard 恢复到回退前的版本。