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 --onto
和 git 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)
我确定以前有人问过这个问题,但我不知道如何用短语表达查询。
场景如下:我从我的 .bashrc 中加载了一堆 bash 脚本,我将它们存储在私有 github 存储库中,以便我可以跨计算机使用它们。每台计算机都有自己的怪癖,所以我为每台计算机都有一个分支。我在我的工作计算机上开始这个项目,所以 master
有一堆与我的家庭环境无关的代码。
在那些分支中,我已经删除了与工作相关的更改,但是如果我可以使 work
成为它自己的分支并使 master
成为基础的,非定制的,那就更好了一组代码。这样,每当我在 work
分支中进行更改时,当我将家用计算机重新定位到 master
时,我不会遇到有关已删除文件的合并冲突。但是,我想对适用于我所有分支机构的 master
进行更改;如果我然后将 work
变基回到 master
——它删除了我的工作代码——work
将收到这些删除。
如何将 master
分支到 work
,删除 master
上与工作相关的更改,然后将 work
变基回到我清理后的 master
而不删除work
?
我可以使用 git rebase --interactive
拆分出自时间开始以来我所有的工作更改,但对于一个不可能那么罕见的操作来说这似乎很乏味。
我看到了 git rebase --onto
和 git 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)