当我在一个项目中工作时,有时我的机器需要对一两个或多个配置文件进行特定的更改。目前,我将这些更改存储在本地分支:local-settings
中。
然后,当我需要进行错误修复和测试时,我会从远程进行拉取并获取最新信息。我创建了new-branch
,然后将local-settings
合并到new-branch
中,并执行git reset HEAD~1
以"撤消"合并提交。从那里开始,我只暂存并提交我的bug修复文件。
这样做有什么害处吗?有没有更好的方法来长期坚持我需要的局部变革?我看到其他问题提到了git stash
,但一旦弹出,就会删除隐藏的更改,对吗?这对我来说似乎不是一个好的解决方案。
谢谢!
我认为你可以用相反的方法:不要总是将你的local-settings
(这会污染你的历史(合并到new-branch
中,只需重新建立你的local-settings
的基础并在其上开发错误修复程序(假设local-settings
派生自new branch
。否则,cherry-pick
可能会有所帮助(。然后,完成后,stash
您的工作,切换到new-branch
和stash pop
。之后,commit
将错误修复为new branch
。
这样,您总是在local-settings
分支上进行开发,但在new-branch
中提交更改。
编辑
如果您的local-settings
分支有多个提交,则可以使用rebase --onto
:
假设您已将分支机构命名为:
A -- B -- C -- D (new-branch)
-- E -- G -- H -- I -- J (current-parent)
-- K -- L (local-branch)
你想做的是将我的分支重新设置到D上,如下所示:
git rebase current-parent local-branch --onto D