Git在分支上变基,但将所有差异视为提交

f8rj6qna  于 2023-06-20  发布在  Git
关注(0)|答案(1)|浏览(119)

我有一堆从我的.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,但从我所读到的,这两个看起来都不像是正确的方法。

ctehm74n

ctehm74n1#

我如何将master分支到work中,删除master上与工作相关的更改,然后将工作重定向到清理后的master上,而不删除work中与工作相关的所有代码?
变基到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)

相关问题