这与维护一个你无法控制的上游项目的本地补丁集类似。最简单的处理方法是创建一个中间分支,所有更改都通过该分支合并,如下所示:
___________________________ master
\__________________________ config-changes
\_____________________ daily-work
master
包含所有需要共享的内容。在 config-changes
中只提交你想要轻松恢复的更改。 daily-work
是你进行所有工作的分支。要设置它,请执行以下操作:
# (no local config changes should be in master at this point)
git checkout -b config-changes master
# Make your config-related changes that you don't want to share
git commit -am "Made local config changes"
git checkout -b daily-work
# Work and commit like normal
当你准备好分享你的更改时,请执行以下操作:
git rebase --onto master config-changes daily-work
git checkout master
git merge daily-work
这将使其回滚到config-changes
的所有更改,但是看起来您就像直接从master
分支创建了新分支。请注意,在完成此操作后,如果您想继续在daily-work
上工作,则需要将其重新基于config-changes
进行rebase,但最好为每个更改创建一个新分支。
当您需要从master
拉取新更改时,请执行以下操作:
git checkout master
git pull
git checkout config-changes
git merge master
合并操作会将您本地的配置更改应用到最新的主分支上。然后,您可以自由创建一个新的
daily-work
分支,或者根据需要将
config-changes
合并到旧分支中。基本上,您永远不要直接从
master
分支合并到
daily-work
分支。您总是要先经过
config-changes
分支。
起初可能会感觉很麻烦,但只要做一两次就会发现比手动维护更容易。