有没有办法从分支提交一些更改并保留其余部分?

ilo*_*ewt 5 git

我编写了一个机器学习管道的蓝图,可以在许多项目中重复使用。当我遇到一个新项目时,我会创建一个分支并在该分支上工作。很多时候,当我在分支机构工作时,我会发现以下几点:

  1. 在分支上发现的一些代码更改/改进应该合并到主干。
  2. 一些代码更改应该只发生在分支上,因为每个项目都有其细微差别,但模板应该或多或少与主项目相同。

我在结合第 1 点和第 2 点时遇到了麻烦。有没有办法将一些更改从分支合并到主干,这对我来说似乎很棘手,因为这是一个连续的过程。

Von*_*onC 1

如果您是唯一在该分支上工作的人,您应该执行 git rebase -i (交互式 rebase)来重新排序您的提交,将应合并到 master 的提交放在第一位,并将最新的保留为最新的提交仅限分行。

git switch myBranch
git rebase -i master

# reorder to get:

m--m--m
       \
        M--M--M1--b--b--b (myBranch)
Run Code Online (Sandbox Code Playgroud)

完成后,在 M1 创建一个分支,并将该分支合并到 master

git switch -c tmp M1
git switch master
git merge b1

m--m--m--M--M--M1 (master)
                 \
                  b--b--b (myBranch)
Run Code Online (Sandbox Code Playgroud)

最后,强制推送你的分支,因为 rebase 重写了它的历史

git switch myBranch
git push --force
Run Code Online (Sandbox Code Playgroud)

(如果您是该分支上唯一的工作人员,那么这是最容易完成的)