八珍豆腐 2022-09-16 09:52 采纳率: 0%
浏览 33

git 使用中rebase 和cherry pick 遇到的困惑,求解答

之前合并代码操作,发现合并了我并不需要的区域,具体操作如下。
分支的结构大致为:

A — 1a提交(对1.txt 加入一行内容:11111) 一 2a提交(对1.txt 加入一行内容:22222) --- 3a提交(对1.txt 加入一行内容:33333)
##一条分支(A分支)每一个提交均对1.txt 文件增加一行内容。

A — b1提交(对1.txt 加入一行内容:44444)
##与A分支同源,创建的B分支,在该分支基础上对1.txt文件增加一行内容。

当前分支结构
A — 1a 一 2a --- 3a

b1
期望结果
A — b1 — 3a

   那么此时我进行git rebase 操作,想将A分支的a3更改内容 移植&变基 至B分支的最新提交之后:

git rebase --onto B hashid_a2 hashid_a3
没问题吧,这种操作目的是 将a3 内容:1.txt 增加33333,这个操作 拉到B分支上,冲突解决完毕在1.txt上应该是 显示 33333和44444.

   但是事实上报出冲突后,打开1.txt 竟然显示所冲突的位置包含了 11111、22222内容字段。这个我就不太理解了,为什么rebase 、cherry-pick  会合并该提交更改之外的内容,不应该是只合并操作吗(在1.txt文件内增加一行33333)?

还望各位解答。我人都懵了,对git 理解的概念都快崩塌了。

  • 写回答

3条回答 默认 最新

  • 暗星涌动 2022-09-16 16:42
    关注

    img


    用 cherry-pick 就可以复制一个commit

    评论 编辑记录
  • sankgao 2022-10-13 22:26
    关注

    git rebase --onto B hashid_a2 hashid_a3
    这个命令执行完,并解决冲突后,就将 A 分支 1.txt 文件中的所有变更,都移植到 B 分支 1.txt 文件中了

    希望可以帮到你

    评论 编辑记录
  • 小冷coding 2022-10-16 19:47
    关注

    git reabse

    在 git 命令中,git rebase命令可以令当前所在分支与指定分支合并,作为一个新提交。但之前的记录保留在原地。他有两种参数形式:

    将当前记录及当前记录以上的记录(截止到公共父记录),合并到目的分支
    $ git rebase <目的分支>
    将一个记录及此纪录以上的记录,合并到目的分支,关键是参数的顺序
    $ git rebase <目的分支> <待移动分支>

    git rebase -i 命令可以打开一个交互式的窗口,他有下面两种参数形式:

    将当前记录及当前记录以上的记录(截止到公共父记录),合并到目的分支
    $ git rebase -i <目的分支>
    将一个记录及此纪录以上的记录,合并到目的分支,关键是参数的顺序
    $ git rebase -i <目的分支> <待移动分支>

    git cherry-pick

    此命令可以按指定的顺序择取数个提交,放置在当前节点下方。

    $ git cherry-pick <有序参数列表>

    评论

报告相同问题?

问题事件

  • 修改了问题 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥15 如何在EXCEL某单元格中查找是否存在另一列中的内容。
  • ¥50 非对称加密(相关搜索:密码学)
  • ¥15 关于非编程寻迹小车的分析
  • ¥15 java导出EXCEL这里已经执行成功了,但是流浪器没有下载
  • ¥15 帮我把代码改的能正常运行就行
  • ¥50 有限元修正、模型修正、最小二乘法,详细步骤
  • ¥15 用plc编写梯形程序
  • ¥15 关于#物联网#的问题:新大陆AIOT中,按照手册教程进行添加,设置完成后网关一直不上线,显示Never这是网络服务的信息
  • ¥15 这个要用一维热方程但是我不知道怎么运用这个公式
  • ¥15 OpenFOAM多孔介质传热模型建模