gpt4 book ai didi

git:将一些文件的历史拆分到一个单独的分支中

转载 作者:太空狗 更新时间:2023-10-29 13:10:32 25 4
gpt4 key购买 nike

假设我刚才介绍了 ,现在注意到它不应该是我的 main 分支的一部分,而应该是一个分支 feature。是否可以使用例如 git-filter-branch 自动将所有 的历史从我的 main 分支移到 feature 分支?

最佳答案

听起来你正在做一些相当疯狂的事情! :)

也就是说,我看到了一些选项,但没有一个是特别自动化的。

  1. 如果您对该文件进行了大量提交,只需承认错误,从您的 HEAD 中创建一个新分支,然后将具有该功能的进一步提交放入该分支,直到它们稳定为止。如果你是 repo 的共享者,这将成为唯一真正的选择。没有人希望拥有不同的历史记录,尤其是当该功能在历史深处被提交时。

  2. 如果您只谈论 10 个左右实际触及该文件的提交,并且它们是最近提交的,没有许多其他提交交错,您可以在 HEAD 上 checkout 一个新分支,然后还原在添加该功能之前,您不希望将此功能返回到分支,然后从功能分支中挑选您需要的提交,直到您准备好在以后将它们全部提交。

    <
  3. 如果您要处理大量的历史记录、大量的交错提交,并且您真的根本不想让该功能出现,您可以写一点获取 git log 输出的 shell 脚本樱桃将其挑选到一个新分支中。类似的东西:

    $ cd git-repo
    $ git checkout -b feature-x
    $ the-perfect-shell-script `git log --pretty=format:"%H" path/to/feature.c`

    一旦你有了那个特性分支,所有的提交都被挑选出来了,你就可以使用 git filter-branch过滤掉所有引用该文件的提交。 man page有一个简单的例子可以做到这一点。

    一旦你知道了,你就可以git rebase feature-x --onto <filtered-branch>你应该可以开始了。

    当然,这应该是非常令人沮丧的,特别是如果任何已发布。

关于git:将一些文件的历史拆分到一个单独的分支中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278264/

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