实现要求
有2个分支master、dev
dev commit > master 10次
需要通过设置时间的方式给master打一个补丁
操作步骤
1)因为需要反复操作,有些action是不可少的
$ git reset --hard 000135833zaaafs3123213124124125
$ git push -f
这2步的意思是本地代码库重置到commit的xxx版本
强推到服务器
2)Dev打diff,找出2个commit之间的差异
$ git diff 000135833zaaafs3123213124124125 74331401589jkldadamdm13 > patch.dff
diff command:
param1:旧的commit,必须是在master拥有的起点。
例如Dev --> 1-20 Master -->1-5 ,需要合并Dev的6-20,则param1起点就是Master的5
param2:commit终点
param3:生成文件名
3) Master合并代码
$ git apply --check patch.diff
$ git apply patch.diff
首先执行下--check查看是否有错误,没有错误会提示空行
然后合并diff到本地代码
可能会存在LF换行问题,详情见:https://www.jianshu.com/p/2a46dfd3705a
windows下git config --global core.autocrlf 设置成false,apply会执行失败。
4)Master代码提交
$ git add .
delete mode 100544 src/main/java/..........................
delete mode 100544 src/main/java/..........................
delete mode 100544 src/main/java/..........................
delete mode 100544 src/main/java/..........................
delete mode 100544 src/main/java/..........................
$ git commit --date="Feb 20 9:15:30 2020 +0800" -am "代码提交"
$ git push
因为会有新增和删除的文件,所以执行的是add .,全部添加到缓冲区
按照需求时间执行commit
提交到服务器
Note:
不要直接干Master,先创建几个测试分支练习,待成功再去操作master