微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Git rebase 到分支,但将所有差异视为提交

如何解决Git rebase 到分支,但将所有差异视为提交

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

这是一个场景:我有一堆从我的 .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,但从我读到的内容来看,这些都不是正确的方法

解决方法

如何将 master 分支到工作中,删除 master 上与工作相关的更改,然后将工作重新设置回我清理过的 master 上,而不删除工作中所有与工作相关的代码?

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

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

这将在清理过的 master 上重放你的提交

  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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。