Git 变基到分支但将所有差异视为提交

Git rebase onto branch but treat all differences as commits

我确定以前有人问过这个问题,但我不知道如何用短语表达查询。

场景如下:我从我的 .bashrc 中加载了一堆 bash 脚本,我将它们存储在私有 github 存储库中,以便我可以跨计算机使用它们。每台计算机都有自己的怪癖,所以我为每台计算机都有一个分支。我在我的工作计算机上开始这个项目,所以 master 有一堆与我的家庭环境无关的代码。

在那些分支中,我已经删除了与工作相关的更改,但是如果我可以使 work 成为它自己的分支并使 master 成为基础的,非定制的,那就更好了一组代码。这样,每当我在 work 分支中进行更改时,当我将家用计算机重新定位到 master 时,我不会遇到有关已删除文件的合并冲突。但是,我想对适用于我所有分支机构的 master 进行更改;如果我然后将 work 变基回到 master——它删除了我的工作代码——work 将收到这些删除。

如何将 master 分支到 work,删除 master 上与工作相关的更改,然后将 work 变基回到我清理后的 master而不删除work?

中所有与工作相关的代码

我可以使用 git rebase --interactive 拆分出自时间开始以来我所有的工作更改,但对于一个不可能那么罕见的操作来说这似乎很乏味。

我看到了 git rebase --ontogit filter-branch,但从我读到的内容来看,这些看起来都不是正确的方法。

How can I branch master into work, delete the work-related changes on master, and then rebase work back onto my cleaned master without deleting all the work-related code in work?

变基到 master 将使用... rebase --onto:

git rebase --onto master $(git merge-base master work) work

这将在清理后的主控之上重播您的提交

  git merge-base master work
      |
m--m--m--M       (master, cleaned-up)
       \
        w--w--w  (work)

    git rebase --onto master $(git merge-base master work) work

m--m--m--M            (master, cleaned-up)
          \
           w'--w'--w' (work, rebased)