最近学到的Git知识,大厂的Git机制还是很方便的
本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508
一、两次的 git commit 到不是同一个远程分支
- 这里由于提交自己的代码第一次提交到A分支,第二次提交B分支,然后报错了,这里报错以后,会提示一个百度自己内部的链接,你点击链接就可以照着提示去修改,可以说还是省了不少事,不用自己去google百度去解决,开发效率也提高不少
- 上面图片中有6e8713f is CR parent commit 这行提示,划重点,待会要用到。
解决过程
你当前的操作场景如下图,由于一次CR(评审)的多个commits不能push到不同的refs/for/[分支名](可能导致后续评审合入merge failed):
评审是啥意思,这里解释一下。本地开发的流程首先是从自己远程的分支A拉到本地,远程分支是master分支的一个clone,本地完成开发后,需要提交到自己的远程分支,提交以后必须由其它人评审代码(code reviewe),其它同事评审的时候主要找出不合规范和逻辑的地方,你需要修改完成以后,才能合入到你的远程分支A,然后再从你的远程分支A合到master上,这样就完成了代码入库。
- 本次合并我最终的目的是要合到B分支(第一次提交是A分支,第二次是B分支)
- 如果你期望commit 1和commit 2均合入分支B:
- 请回滚本地commit,重新合并为同一笔commit push至分支 B (会生成一笔新的评审)
操作命令
$git reset --soft [CR parent commit] (对应CR parent commit见push报错信息.也就是有6e8713f is CR parent commit)
$git commit -m"commit message"
$git push origin HEAD:refs/for/[branch B]
二、git 撤销文件修改
什么时候用到
- 如果有文件A没有发生修改,但是再提交评审的时候还是发现A出现了修改,你使用git diff 并没有发现你的本地文件A和远程分支A有什么不同,需要撤销修改
- 不小心勿加了空行
- 就是想撤销已经提交的某个文件的修改
如何操作
1.撤销缓存区的修改
git reset HEAD filename
- 撤销工作区的修改
git checkout --filename
三、git 冲突解决
上图是提交代码时候,发生了冲突,依旧很贴心,百度这套代码审查系统依旧给了提示,照着提示操作一波。
Step1. 在本地仓库中, 更新并合并代码
git fetch origin
git rebase origin/master
Step2. 依据提示分别打开冲突的文件,逐一修改冲突代码
- 可以看到有head和你的本次提交信息,head是远程分支,git commit -m "commit提交信息" 这条命令中我填的是689任务,可以看到每有一处信息不一致,在你产生冲突的文件都会提示出来。
- 我们需要做的就是解决冲突,对比远程和你本地产生冲突的地方,保留下你需要的代码,同时记得把head和689任务(commit提交信息)这些不是代码中的内容删除掉。
- 或者不需要这样一点点修改,你已经知道了你需要提交什么样的代码,那么直接将你确定好没问题的代码复制到这份冲突文件中,然后进行git三连即可
Step3. 所有冲突都修改完毕后, 提交修改的代码
git add -u
git rebase --continue
Step4. 更新patch
git push origin HEAD:refs/for/master
四、撤销你的commit提交
如何撤销commit提交,熟练的执行完以下两条命令以后:
git add *
git commit -m "提示信息A"
你发现自己的提示信息写的不对,想git commit -m "提示信息B",但是由于已经git commit 过了,会提示你没有什么需要git commit的,这个时候如何撤销git commit呢?
git reset --soft HEAD^
这样上一次提交就被撤回了,然后继续执行git commit -m "提示信息B" 即可。
如果是头条用户,可以在我的头条号 程序员乔戈里 私信我 资源 获取价值29998元的编程和考研资料
觉得文章不错的欢迎关注我的WX公众号:程序员乔戈里
我是BAT大厂后台开发工程师,专注分享技术干货/编程资源/求职面试/成长感悟等,关注送5000G编程资源和自己整理的一份帮助不少人拿下Offer的整理一份面试资料《技术面试必备基础知识》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构、Leetcode 题解、、C++、Python、后端面试、操作系统、计算机网络、系统设计等等。关注公众号并回复 888 领取,免费下载CSDN资源。
如果你对算法感谢趣,欢迎关注我的公众号 图解算法,使用Python/Java/前端/C++四种语言对Leetcode和剑指offer进行漫画讲解,帮助你快速搞懂算法!
最近学到的Git知识,大厂的Git机制还是很方便的的更多相关文章
- Git知识总览(二) git常用命令概览
上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- Git知识总览(五) Git中的merge、rebase、cherry-pick以及交互式rebase
上篇博客聊了<git分支管理之rebase 以及 cherry-pick相关操作>本篇博客我们就以Learning Git中的关卡进行展开.下方列举了LearningGit中的 merge ...
- Git知识总览(六) Git分支中的远程操作实践
前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...
- git知识总结-1.git基础之数据存储
1.前言 git包含四种对象文件: blob tree commit tag(目前没用到,暂时忽略) 2. git对象的关系 图 git三种对象关系 粗略一看,可以大致感觉出blob类似于文件 ...
- git知识总结-4.git服务器搭建及迁移git仓库
1. 前言 因为手里有一份代码之前是直接从其它git服务器上克隆下来的,现在想自己搭建一个git服务器把这份代码管起来. 2. 搭建git服务器 1.安装git: $ sudo apt-get ins ...
- git知识总结-2.git基本操作之原理说明
0.前言 本文主要对git常用命令的工作原理做一个详细的说明,常用命令主要包括: 1.git add git add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理. 2. gi ...
- git知识总结-2.git基本操作之操作汇总
0.前言 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 上图分别为: Workspace:工作区 Index / Stage:暂存区 Reposito ...
- git知识总结-1.git基础之git reference
1.前言 Git版本管理的内容,是一系列由40bytes SHA-1字符串所代表patch,而Git References,则是对这些字符串的引用(也可以理解为别名).为什么需要别名呢?因为这些字符串 ...
- git知识总结-1.git基础之git分布式
1.前言 我们在介绍git版本管理的时候,没有提到“服务器”的概念,所有的版本管理操作,都是在本地进行的.这就是git与其它版本管理工具(如CVS.SVN等)最本质的区别所在:分布式. 所谓的分布式, ...
随机推荐
- JPA案例
ORM 什么是ORM: 对象关系映射(Object Relational Mapping,简称ORM)是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的. ORM思想 主要 ...
- 虚IP解决AlWaysON读库服务器过保替换
公司核心交易数据库,使用SQL 2012 AlWaysON的1主4从,有2台(8.14,8.15)从库服务器,已经使用3年多,过保替换,新买的2台服务器已经安装好,一开始方案如下: 服务器(8.14) ...
- 51NOD---逆序对(树状数组 + 归并排序)
1019 逆序数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称 ...
- abp(net core)+easyui+efcore实现仓储管理系统——菜单-下(十七)
实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案 ...
- 3.python之文件操作
一.文件操作初识 f = open('文件路径', '编码方式', '操作方式') # 注意里面所有内容,需加引号 ” 打开一个文件需要知道的内容有: 文件路径:c:\文件.txt(绝对路径和相对路径 ...
- css 实现居中的五种方式
一 .文字居中 1 固定容器高度的单行文本垂直居中:height=line-height 2 未知容器高度的文本垂直居中:设定padding,使上下的padding值相同即可 ...
- MySql创建索引、删除索引、新增字段、删除字段、修改字段语句
--------------------------------------------------------- -- ALTER TABLE 创建索引 ---------------------- ...
- java架构之路-(11)JVM的对象和堆
上次博客,我们说了jvm运行时的内存模型,堆,栈,程序计数器,元空间和本地方法栈.我们主要说了堆和栈,栈的流程大致也说了一遍,同时我们知道堆是用来存对象的,分别年轻代和老年代.但是具体的堆是怎么来存放 ...
- NOIP要炸?
今天起床,翻我的群,突然看见一条消息: “NOIP要被禁赛了!” 莫名奇妙啊...... 于是我就进去看了看,网上疯传,搞得跟真的一样,差点吓到我了. 但好在每个人心中都有一个阿Q,会精神胜利法,于是 ...
- 在VMware中就显示lo回环IP:127.0.0.1的解决办法。
在VMware时由于某些原因导致,在使用ifconfig只会显示lo,不显示其他的东西 步骤:1.sudo lshw -numeric -class network 2.sudo route -nv ...