V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wuwukai007
V2EX  ›  Python

git 主分支回退后无法 merge 问题

  •  
  •   wuwukai007 · 2020-09-18 12:19:21 +08:00 via Android · 2700 次点击
    这是一个创建于 1519 天前的主题,其中的信息可能已经有所发展或是发生改变。
    分支 A merge 了分支 B,
    然后 master 合并了分支 A,
    现在回退了主分支合并的分支 A,
    然后在主分支上合并分之 B,提示无需合并,已在之前合并,卡在这了,现在怎么将分支 b 合并到主分支呢?
    11 条回复    2020-09-25 15:19:02 +08:00
    wjidea
        1
    wjidea  
       2020-09-18 12:27:11 +08:00
    可以试一下 cherry-pick ?
    rrfeng
        2
    rrfeng  
       2020-09-18 12:33:03 +08:00
    revert revert 就行
    Hieast
        3
    Hieast  
       2020-09-18 12:56:12 +08:00
    不保留 master 历史的话可以直接把 master reset 到合并 A 之前的那个版本,再 merge B,个人开发者这么干很爽。
    calmzhu
        4
    calmzhu  
       2020-09-18 13:05:12 +08:00
    怎么回退的
    wuwukai007
        5
    wuwukai007  
    OP
       2020-09-18 13:10:34 +08:00 via Android
    @calmzhu gitdesktop 客户端里面点了 revert 回退的
    ypcs03
        6
    ypcs03  
       2020-09-18 13:27:33 +08:00
    在 b 分支 rebase 主分之再 merge 试试
    calmzhu
        7
    calmzhu  
       2020-09-18 14:09:37 +08:00
    revert 不行的,revert 的意思就是 commit 一个反内容的提交。所以对于 master 来说是



    A1 A2 A3 ---MergeB
    /插入 master
    master1 --> Merge A ---> MergeB(只是内容为取消 MergeA)

    所以这时候 A 的 commit 信息是在 master 的。

    要么 reset master 到 master1

    或者直接从 master1 checkout 一个新的 branch 用来 mergeB 就可以了
    moonrailgun
        8
    moonrailgun  
       2020-09-18 14:13:18 +08:00
    其实 2 楼正解

    你 revert
    我 revert 你的 revert
    way2explore2
        9
    way2explore2  
       2020-09-18 15:14:18 +08:00
    1. revert-revert
    2. on master, hard reset to (before merge A), then merge B

    I usually use 2
    baiyi
        10
    baiyi  
       2020-09-18 15:33:31 +08:00
    revert 是提交了一个反提交,所以你的历史中分支 B 已经合并了。

    可以直接 reset 到合并之前,然后 merge B 。
    networm
        11
    networm  
       2020-09-25 15:19:02 +08:00 via iPhone
    Git 通过节点的依赖关系决定是否合并,通过合并提交自身的所有文件改动来引入要合并分支的改动。

    以 master 合并 A 分支前的提交新建分支 X,合并 B 分支(这样可以正确得到所有 B 分支的改动)
    然后 master 分支再合并这个新建的分支 X,把 B 分支的改动带到 master 分支。

    这种方法类似 @way2explore2 的第二种做法,但是不丢失 master 合并 A 分支后的所有提交及改动。

    可以尝试一下,理论上可行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:32 · PVG 05:32 · LAX 13:32 · JFK 16:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.