gpt4 book ai didi

git - 如何在 master 分支之上重新应用分支的所有提交,但将其保留在自己的分支中?

转载 作者:太空狗 更新时间:2023-10-29 14:45:43 27 4
gpt4 key购买 nike

好吧,从标题上看可能很难理解。基本上我有一个 Wordpress 插件,我想对插件的完整版和精简版使用相同的存储库。我从 a great post about this topic 得到了这个好主意Stackoverflow 上的其他地方。

想法是你有一个精简版的分支,它删除了文件/代码。每次更新 master 分支时,都会“ rebase ”lite 分支,然后它基本上会获取 master 分支中的所有更改并将它们插入到 lite 分支下——就像 lite 分支正在重新应用所有删除的内容又是它。

从概念上来说,我至少隐隐约约地理解了它……但我不知道如何执行它。这里有一些插图。假设我有两个分支:

enter image description here

我想获取 master 中的所有最新更改并将它们插入到 lite 分支“下”,就像这样(尽管我有一种预感,我的图表错误地描述了它实际上是如何发生的)。

enter image description here

如果有人可以,我会很高兴:

  1. 告诉我如何完成任务
  2. 纠正我在概念上的误解,如果我是的话

此外,我过去通过 CLI 使用 git,但现在使用 Sourcetree。我对任何 CLI 答案都满意,但如果您碰巧有特定于 Sourcetree 的答案,也欢迎您!

最佳答案

实际上,您的图表看起来不错,从 CLI 中您只需执行以下操作:

$ git checkout lite
$ git rebase

假设您已经告诉 git 将 master 设置为 lite 的“上游”。

如果你没有做过这个上游设置,你可以做,或者在rebase命令中使用一个额外的词来指定上游:

$ git rebase master

rebase 做的是:

  • 找到当前分支的上游,或者使用你告诉它使用的那个(以合适的为准)
  • 找到 HEAD 和上游之间的 merge 基础
  • 复制当前分支上但不在上游分支上的每个提交——这是您第一个图表中的两个紫色提交——每个副本由以下人员完成:

    • 将提交与父级进行比较
    • 将这些更改应用到一个新的(匿名的、分离的 HEAD)分支,该分支正在从上游的顶端生长
    • 提交刚刚应用的更改
  • 一旦所有提交都被复制,从原始分支上剪下分支标签并使其指向新的 tip-most 复制提交。

如果我们忽略一些角落和特殊情况,这就是全部。具体来说,git 将检测在被重新定位的分支中所做的更改(diff hunk)是否也已经在上游中,并酌情忽略更改甚至整个提交;有时 git 无法应用差异并且会停止并需要帮助(就像 git merge);在极少数情况下,git 会去应用差异,并将它放在错误的位置,产生一个错误的“副本”(也就像 git merge — 事实上,rebase 可以做一个如有必要,对其复制的每个提交进行完整的三向 merge 。

与 merge 一样,您应该检查结果,以防 git 弄错“重新应用以前的更改”。

关于git - 如何在 master 分支之上重新应用分支的所有提交,但将其保留在自己的分支中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com