我们正在开发一个嵌入式项目。 目前,我们有一个带控制器A的工作硬件。 之后,最终产品将有一个带控制器B的新硬件。 我目前正在分支1上实现业务逻辑,使用我们的旧硬件和控制器A. 我的同事正在为分支2上的控制器B移植软件。他们正在调整所有低级别的东西,设备驱动程序,HAL和东西。
很快我们就必须将分支1合并到分支2中。
但是,我们只想合并一小部分文件。 尝试合并设备驱动程序是没有意义的。在控制器B上,我们将拥有完全不同的设备驱动程序和HAL。 此外,合并与板相关的配置文件也没有意义。
但是当我在分支2上运行“git merge 1”时,我会遇到很多合并冲突,因为git会尝试合并每个文件。 我需要一些方法来挑选一组我要合并的文件。
我现在的解决方案是不使用“git merge”功能。 相反,我创建了两个本地存储库,一个在分支1上,另一个在分支2上。 然后我可以使用一些随机的difftool并手动合并一组文件。 但是,有了这个解决方案,git就不会知道我做了合并。 此外,分支树视图不会反映我的“合并”。
那么,有没有办法实现我想要的目标?
答案 0 :(得分:0)
您可以使用cherry-pick命令从一个分支获取单个提交。
如果您想要的更改不在单独提交中,则使用此处显示的方法将提交拆分为单个提交。粗略地说,你使用git rebase -i获取原始提交进行编辑,然后git reset HEAD ^选择性地还原更改,然后git commit将该位提交为历史记录中的新提交。
在Red Hat杂志中还有另一种不错的方法,他们使用git add --patch或者可能是git add --interactive,它允许你只添加一部分大块,如果你想将不同的变化分成个人文件(在该页面中搜索"拆分")。
拆分更改后,您现在可以选择您想要的更改。