默认情况下,git push
会推送暂存区所有提交(也即HEAD
及其之前的提交),使用下面的命令可以改变此默认行为:
$ git push <remotename> <commit SHA>:<remotebranchname>
举例如下:
git push origin 248ed23e2:branchname
如果想要只推送某一条提交:
第一种方式,即符合git操作的规则,从最初的commit开始一个一个提交,但是不能实现指定某一个commit,基本满足日常的开发异常情况了(只能按顺序提交)
图一
本地commit了3次提交但是并不想一下push到远程,根据功能或者时间的原因,想一个一个提交
此时可以使用:
// 最下面的 一条为最老的一条,优先推送
git push origin 9267dd9:test
// 接着第二条同样的命令,commit换掉即可
git push origin 9267dd9:test
// ... 依次按顺序一个一个提交...
第二种方式,采用cherry-pick用新分支去拉取当前分支的指定commit记录,之后推送到当前分支远程仓库实现推送指定历史提交的功能
首先看下cherry-pick的相关介绍:
Git---分支合并之合并分支指定commit提交数据cherry-pick_绝世唐门三哥的博客-CSDN博客现在突然出现一个需求,此时本地分支需要拉取另一个分支test上的某部分代码修改(简单说就是需要合并指定commit记录的文件修改记录到当前分支)这个常用在自己清楚每个分支的对应提交文件,否则可能合并部分代码导致后期项目合并问题!标志,因为它会生成标准化的提交消息,通知用户它是从哪里pick出来的。1. 在被合并的分支上进行查询commit操作。2. 回到主分支后进行操作。https://blog.csdn.net/COCOLI_BK/article/details/128134070比如图一中是原始的分支记录,现在要将第二条记录单独提交到远程分支,即实现提交指定分支记录的功能:(操作前git log自行查看对应的commit hash)
1. 创建临时分支
// localbranch 为本地分支名 origin/feat 为远程目标分支
git checkout -b localbranch --track origin/feat
2. 执行cherry-pick,将修改bug的记录同步过来
git cherry-pick fcf254130f
后续操作就是将临时分支记录推到目标分支!!!
如果产生冲突,请自行查看上面的cherry-pick文章,有解决办法!!!