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

  我们会遇到这样的情况,在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 了

git push 提交某一个commit的更多相关文章

  1. Git push 提交代码到远程global user.name错误解决办法

    问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱.克隆了服务器代码到本地,按需求进行代码开发.提交本地代码到服务器时出现错误.具 ...

  2. git push提交报错,提示文件过大,且去掉大文件也报同样的错误

    错误原因: 大文件存在没有被提交的commit记录里面: 解决方案: 删除有大文件的commit记录即可 移除大文件的正确姿势 $ git rm --cached giant_file(文件名) # ...

  3. Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.

    一.git push origin master 时出错 错误信息为: Permission denied(publickey). fatal: Could not read from remote ...

  4. git回滚到某一个commit

    git reset 046bd7b5c1d134b8123f59ea71b19875a6a2fc3e git reset --hard 046bd7b5c1d134b8123f59ea71b19875 ...

  5. git push 提交时出错 the remote end hung up unexpectedly

    错误原因 与远程服务的连接中断,但是检查发现origin还在,可能是文件太大,缓存不够,增加缓存大小 解决方案 专案目录 >.git >config 在末尾增加如下代码 [http] po ...

  6. git push and git pull

    原文链接 git push 通常对于一个本地的新建分支,例如git checkout -b develop, 在develop分支commit了代码之后,如果直接执行git push命令,develo ...

  7. Git 项目提交新仓库

    提示:进入项目文件操作 步骤: 1.git init   ----------初始化git仓库 2.git remote add origin 你的项目地址  ------------------如: ...

  8. git 只提交部分修改文件

    1.git status //查看修改文件状态 2.git add  //将想要提交的文件add到本地库 4.git status  //查看修改文件状态 3.git commit  //提交add到 ...

  9. Git 实用操作:重写 Commit 历史

    当我们修改完代码,提交了一个 commit,然后发现改错了,怎么修正?下面分两种情况来讨论:修正最近一次提交,和修正历史多个提交. 修正最近一次提交 如果发现刚刚提交的内容有错误,当场再修改一下再提交 ...

随机推荐

  1. windows 上的 neovim 配置

    可以使用简单的 linux 下 neovim 配置,增加了对 golang, python,  ruby 脚本文件一键运行快捷方式. """""&qu ...

  2. python----流程控制

    计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循环结构. 事实证明,任何一 ...

  3. 【Linux】解决Android Stadio报错:error in opening zip file

    报错: Failed to complete Gradle Execution Cause: error in opening zip file. 原因: 安装gradle失败引起的,往往是上网需要验 ...

  4. LeetCode_7.Reverse Integer

    问题 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Ex ...

  5. *** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED

    *** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED 在软件已经执行破解仍然出现,是因为工程是破解前建立的,要先执行 ...

  6. zookeeper的Java客户端API

    zookeeper作为一个分布式服务框架,主要用来解决分布式数据一致性问题,对多种语言提供了API.这里主要记录下JAVA客户端API的使用. 1.创建会话 客户端可以通过创建一个ZooKeeper实 ...

  7. windows Git Bash 无法运行python解决方法

    以前运行cmd命令都是在cmd里面的,但是那个页面实在是太丑了,后面我就全部用git bash来运行window下的命令了. 但是在git bash 中运行下python – -version 或 p ...

  8. 无法跨越程序集边界使用程序集“DataCheck, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中的类型“List<ILayer>”,因为该类型有一个为嵌入互操作类型的泛型类型参数

    主窗体: FrmDataInspect f2 = new FrmDataInspect(listMapControl1Lyr); f2.Show(); 弹出的窗体: 应该改为: gListMapLyr ...

  9. 20165336 2017-2018-2《Java程序设计》第6周学习总结

    20165336 2017-2018-2<Java程序设计>第6周学习总结 教材学习内容总结 常量池中的数据在程序运行期间再也不允许改变. String s = new String(&q ...

  10. wait()函数的详细分析

    之前一直没太深入的去理解wait()函数,今天机缘巧合之前又看了看,发现之前没有真正的理解该函数. 众所周知,wait()函数一般用在父进程中等待回收子进程的资源,而防止僵尸进程的产生. (In UN ...