gpt4 book ai didi

git - 如何压缩一个分支中的提交,同时将它们保留在另一个分支中?

转载 作者:行者123 更新时间:2023-12-04 13:03:32 27 4
gpt4 key购买 nike

我经常犯。我想将细粒度提交的历史记录保存在本地 Git 存储库的一个分支中,并将更粗粒度的提交推送到远程存储库中。

我希望能够在我的“细粒度”本地分支中找到相应的提交。

我怎么做?

最佳答案

为了使您的本地分支远离远程:

  • 创建并 checkout 本地分支(我们称之为 Ruby 分支)。根据需要提交所有细粒度的提交。

    m1 - m2     <- master, origin/master
    \
    r1 - r2 - r3 <- Ruby (fine grained commits - no origin/Ruby)
  • 每当您在 Ruby 中完成粗粒度的工作时要发送到远程,将其 merge 到本地存储库上的适当分支,该分支也是远程的分支。让我们假设这个分支是 master ,但它可能是其他类似 dev , release-xyz , feature-123 , 等等。)

    m1 - m2 ------- m3   <- master (new merge m3 from Ruby)
    \ /
    r1 - r2 - r3 <- Ruby
  • 要创建 merge 提交(上图中的 m3),请检查要 merge 的分支(即 master 等)并且不要重新设置 Ruby分支到 master ,这将复制所有提交 r1 , r2 , 和 r3master .相反,只需使用提交进行正常 merge (即 git merge Ruby )。在 merge 提交中,按照您认为合适的方式总结提交消息中的更改组。
  • 确保 master已 checkout ,并推送到远程 - 或使用特定的推送命令来确保您正在推送 master ,而不是 Ruby .

    m1 - m2 ------- m3   <- master (origin/master updated to m3 from push)
    \ /
    r1 - r2 - r3 <- Ruby (still no origin/Ruby - local only)

  • 这个想法是我们保持 Ruby仅作为本地分支,从不将其推送到远程。推 Ruby当然没有坏处如果其他人应该可以访问这些细粒度的提交。此外,通过推送 Ruby ,它将被保存为备份,以防您的 PC 出现故障,如果需要,您可以将其克隆到另一台 PC 并且您的 PC 不可用。所以你可能想考虑只制作 Ruby您推送到远程的分支 - 但即便如此,您可能仍希望与上述单个提交 merge 。

    关于git - 如何压缩一个分支中的提交,同时将它们保留在另一个分支中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46516708/

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