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,然后发现改错了,怎么修正?下面分两种情况来讨论:修正最近一次提交,和修正历史多个提交. 修正最近一次提交 如果发现刚刚提交的内容有错误,当场再修改一下再提交 ...
随机推荐
- js dom 观察者属性 MutationObserver
MDN上说的很清楚 MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件 co ...
- Linux --Unbuntu php项目对应不同php版本
直入主题 因服务器上项目使用php版本有不同要求,特此解决一下. 下载 服务器上已有php7.0版本,安装7.0的方法自行百度,apt-get管理工具可直接install安装 然后安装一下需要的版本. ...
- Code first 数据迁移
前段时间用到了EF,整理一下 EF ,全称Entity FramWork.就是微软以ADO.NET为基础发展的所谓ORM(对象关系映射框架,或者说是数据持久化框架). 简单说就是根据实体对象操作数据库 ...
- ELK之使用kafka作为消息队列收集日志
参考:https://www.cnblogs.com/fengjian2016/p/5841556.html https://www.cnblogs.com/hei12138/p/7805475 ...
- 主席树||可持久化线段树||离散化||[CQOI2015]任务查询系统||BZOJ 3932||Luogu P3168
题目: [CQOI2015]任务查询系统 题解: 是一道很经典的题目.大体思路是抓优先级来当下标做主席树,用时刻作为主席树的版本.然而优先级范围到1e7去了,就离散化一遍.然后把每个事件的开始(s). ...
- novnc安装教程
适配于centos7 1.安装vncserver # stop selinux and iptables setenforce systemctl stop firewalld systemctl d ...
- [No0000CD]shell 中的单行注释和多行注释
1. 单行注释 众所周知,# 比如想要注释:echo “ni” # echo "ni" 2. 多行注释 法一: : << ! 语句1 语句2 语句3 语句4 ! 例如 ...
- [UI] UI things
反正我不懂. 但是很酷. https://facebook.github.io/react/ https://cn.vuejs.org/ https://angular.cn/
- 查找->动态查找表->B+树(无代码)
文字描述 B+树定义 B+树是应文件系统所需而出的一种B-树的变型树.一棵m阶的B+树和m阶的B-树的差异在于: (1)有n棵子树的结点中含有n个关键字 (2)所有的叶子结点中包含了全部关键字的信息, ...
- 2018/03/08 每日一个Linux命令 之 chattr/lsattr
每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... ...