git push 的符号笔有什么用_git push 提交某一个commit

(以下情况是我们的一位开发小哥哥遇到了提交失败,来找我,我给他解决的过程,以前我也没遇到,所以记录下来)

我们会遇到这样的情况,在develop分支上,第一天修改的文件,已经执行了git commit 添加了提交记录信息commit1,忘记push了,然后第二天,执行了git pull,拉取了服务器的一大堆提交下来,比如有commit2,commit3,commit4之类的,第一天的提交commit1已经被冲到前面去了,但是现在我本地也有一些其他改动,我又想提交之前的commit1,只提交这个,我要怎么办呢?

注意,此时本地的提交已经变成下面这样了:

merge_new

commit4

commit3

commit2

commit1

commit0

其中的“merge_new”是你执行git pull时,拉取下来的服务器代码和本地代码的一个合并记录,如果你想直接push的话,这条记录也会跟着推上去,所以平时都建议大家,修改代码之前先pull拉取服务器的新代码下来,然后开始修改,提交之前就不要在拉取新代码了,就是为了防止这条记录的产生。

此时,如果我只提交commit1呢,我要怎么提交?

这里说下我尝试了好几种错误的方式,包含

(1)git diff commit0 commit1 > test.patch ,然后再新的仓库路径下git apply test.patch(开发小哥哥直接说patch里没有他的提交,不科学啊)

(2)git show commit1 > test.patch , 然后再新的仓库路径下git apply test.patch,显然,这不是patch的正确生成方式,打patch毫无疑问的失败了

(3)git push commit1:develop 这是网上找的一种方式,但是还是失败了

正确的步骤如下:

(1)基于工作分支develop(根据自己的时间情况修改下)的最新节点创建并切换到新的分支test:git checkout -b test  remotes/origin/develop,操作执行后,本地会新建一个test分支,并且切换到test分支,git branch 可以看到当前所在的分支

(2) (此时已经在test分支上了)cherriy-pick commit1到test分支上:git cherry-pick commit1

(3) git log 我们可以看到commit1 已经在test分支上了, 并且是最后一个提交

(4)现在直接push到工作分支develop就可以了:我们用的是gerrit做代码审核的,所以,我们的命令是git push origin HEAD:refs/for/develop,如果你没有gerrit审核,直接git push 就ok 了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值