从history1分出来的A, B两个branch

A上有一些更改,例如

changeA2

changeA1

history1

B上有一些更改,例如

changeB2

changeB1

history1

---------------------

此时想把B branch上的改动merge到A branch,于是在A branch上执行 git merge B, 执行完毕后A branch的commit记录可能如下:

merge branch 'B' into A

changeA2

changeB2

changeB1

changeA1

history1

此时突然发现情况不对,想把刚才A上刚才的merge取消,遂在A上执行 git revert -m 1 <merge commit的SHA1码>,此时commit记录变成如下状态:

revert “merge branch 'B' into A”

merge branch 'B' into A

changeA2

changeB2

changeB1

changeA1

history1

注意,这时候如果你想再把B branch上的change merge回A上已经不可能了,当执行revert “merge branch 'B' into A”的时候你告诉git不要merge B上的东西(任何基于B的branch都不能merge了),解决方法有两种:

1. 把revert “merge branch 'B' into A”这个commit再revert回去,这一般不太可行,好不容易revert过来的又revert回去么?遂方法2

2. B上的change有些有用,又不想都放弃掉,此时在B上执行git reset <history1的SHA1码>, 也就是把B的头指针指到刚分出来时候的那个commit点,这时候改动还在,只不过都变成unstage状态,这时速度把不对的地方改过来,重新commit一下,此时B的commit记录变为:

NewChangeB

history1

此时再在A上merge B上的更改就可以了

最新文章

  1. [vijos1427]机密信息
  2. java判断身份证有效性
  3. whl文件安装
  4. Android JUnit Test——批量运行测试代码
  5. char、unsigned char、BYTE
  6. Lua 栈中元素的位置
  7. 迁移到 Express 4.x
  8. CentOS目录树详细解释
  9. 【CSS3】Advanced8:CSS Backgrounds: Multiples, Size, and Origin
  10. WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension
  11. PHP — php精粹-编写高效的php代码 --- API
  12. 大型邮箱smtp服务器及端口 收集
  13. Hibernate中自带ID的generator的含义
  14. debian系linux墙内安装安全工具集
  15. ES6使用fetch请求数据
  16. 空的OnGUI也会有gc
  17. Jenkins发送邮件
  18. PHP7最高性能优化建议
  19. Daily Scrum - 11/26
  20. Robotframework(4):创建变量的类型和使用

热门文章

  1. 利用阿里巴巴封装的FastJSON来解析json并转换成map
  2. [C++ Primer] : 第13章: 拷贝控制
  3. GCC参数详解 一
  4. VS编译时使用/去除NuGet管理库
  5. 阿里云服务器挖矿wipefs处理
  6. 9-16Jenkins-4节点
  7. nginx的日志分析
  8. Lua中的metatable详解
  9. decorator的class方式
  10. MapReduce On YARN