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 了
git push 提交某一个commit的更多相关文章
- Git push 提交代码到远程global user.name错误解决办法
问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱.克隆了服务器代码到本地,按需求进行代码开发.提交本地代码到服务器时出现错误.具 ...
- git push提交报错,提示文件过大,且去掉大文件也报同样的错误
错误原因: 大文件存在没有被提交的commit记录里面: 解决方案: 删除有大文件的commit记录即可 移除大文件的正确姿势 $ git rm --cached giant_file(文件名) # ...
- 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 ...
- git回滚到某一个commit
git reset 046bd7b5c1d134b8123f59ea71b19875a6a2fc3e git reset --hard 046bd7b5c1d134b8123f59ea71b19875 ...
- git push 提交时出错 the remote end hung up unexpectedly
错误原因 与远程服务的连接中断,但是检查发现origin还在,可能是文件太大,缓存不够,增加缓存大小 解决方案 专案目录 >.git >config 在末尾增加如下代码 [http] po ...
- git push and git pull
原文链接 git push 通常对于一个本地的新建分支,例如git checkout -b develop, 在develop分支commit了代码之后,如果直接执行git push命令,develo ...
- Git 项目提交新仓库
提示:进入项目文件操作 步骤: 1.git init ----------初始化git仓库 2.git remote add origin 你的项目地址 ------------------如: ...
- git 只提交部分修改文件
1.git status //查看修改文件状态 2.git add //将想要提交的文件add到本地库 4.git status //查看修改文件状态 3.git commit //提交add到 ...
- Git 实用操作:重写 Commit 历史
当我们修改完代码,提交了一个 commit,然后发现改错了,怎么修正?下面分两种情况来讨论:修正最近一次提交,和修正历史多个提交. 修正最近一次提交 如果发现刚刚提交的内容有错误,当场再修改一下再提交 ...
随机推荐
- java课堂动手动脑总结
java有8种基本数据类型:byte,int,short,long,boolean,char,float,double. 对应的为:Byte,Int,Short,Long,Boolean,Charec ...
- [No0000132]正确使用密码加盐散列[译]
如果你是一个 web 开发工程师,可能你已经建立了一个用户账户系统.一个用户账户系统最重要的部分是如何保护密码.用户账户数据库经常被黑,如果你的网站曾经被攻击过,你绝对必须做点什么来保护你的用户的密码 ...
- nethogs 查看 Linux 进程的网络使用
有时候我们客户会发现服务器或 VPS 网络慢,进一步发现大量带宽被占用,一些客户到这里为止就不知道怎么办了.有什么简单办法能找出哪个程序(或者进程)占用了带宽呢?Linux 监控流量的小工具不少,如 ...
- 【编译原理】c++实现自上而下语法分析器
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- Flink – metrics V1.2
WebRuntimeMonitor .GET("/jobs/:jobid/vertices/:vertexid/metrics", handler(new JobVertexM ...
- 内部排序->插入排序->希尔排序
文字描述 希尔排序又称缩小增量排序,也属于插入排序类,但在时间效率上较之前的插入排序有较大的改进. 从之前的直接插入排序的分析得知,时间复杂度为n*n, 有如下两个特点: (1)如果待排序记录本身就是 ...
- LeetCode 824 Goat Latin 解题报告
题目要求 A sentence S is given, composed of words separated by spaces. Each word consists of lowercase a ...
- webstorm背景颜色更改
一.file --> settings 二.editor-->color scheme 然后右边下拉选择 三.apply -- > ok
- ECharts图形库
ECharts图形库百度的项目,图形的创建也比较简单,直接引用Javascript即可 1,引入<script src="{{ url_for("static",f ...
- 获取文件后缀名(zip,rar等)
var filename = file.name; var index1 = filename.lastIndexOf("."); var index2 = filename.le ...