需求:我们在开发的时候很可能有这样的需求,很多人协作在开发一个功能,临时确定之前的一个或者几个改动要上线,但是新开发功能的代码不需要上,这是我们可以回到某一次提交,在这个基础上做一些开发,这个分支来针对我们最近的一次发版的需求。
1.首先我们可以在idea的log里面看到所有的提交
比如我要回到这一次提交,copy版本号:
执行命令:
git checkout 49f21f
假设d3e34d是我刚刚的版本号,这里只需要前六位就行。
在此版本的基础上创建新的本地分支:
git checkout -b 49f21f
此时如果有远程分支49f21f
直接git push origin 49f21f会报错,
error: src refspec metadata-it-49f21f does not match any.
我的方法是先从远程分支追踪一个本地分支
git checkout -b metadata-it-49f21f -t origin/metadata-it-49f21f
再把刚刚的分支merge过来:
$ git merge 49f21f
warning: refname '49f21f' is ambiguous.
warning: refname '49f21f' is ambiguous.
Merge made by the 'recursive' strategy.
LICENSE | 202 +
NOTICE | 64 +
assembly/assembly.xml | 59 +
assembly/pom.xml | 53 +
最后提交远程分支:
$ git push origin metadata-it-49f21f
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 295 bytes | 59.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, done
To rapid:/LEAP/Distros/metadata
743cee9c6..3885a089a metadata-it-49f21f -> metadata-it-49f21f
这样就完成了。任何问题请留言谢谢。