8 git
我在开发VHDL代码时使用git.我正在开发git分支中的组件:comp_dev.组件接口不会改变,只是组件内部的代码.现在,这个组件已经存在于master分支中,但是在一个更稳定的版本中,足以让其他开发人员能够使用该组件.其他开发人员也有他们工作的分支,当他们的代码很好时,他们将他们的分支合并回主人.
在这个阶段,我需要能够将所有更改从master返回到我的comp_dev分支,这基本上没有问题,但有时我正在处理的组件的稳定版本确实会作为其他设计师工作的一部分而改变,但是不是界面.每次我想要合并时,我必须在该特定文件上进行手动git merge -s ours,否则我会遇到需要手动解决的冲突,抛弃他们的工作.
如果我想将其他文件中的更改合并回master,也会发生同样的情况.如果我在执行git merge之前忘记执行git merge -s src/rx/state_machine.vhd comp_dev,那么我最终会进行手动合并,或者我不小心将状态机的不稳定版本合并到了稳定的.
有没有办法暂时从合并中排除一个文件?
如果我理解正确,您希望推迟合并对所述组件的更改(让我们将其命名为“C”),而您的工作重点是其他一些模块。你的工作的一个副作用是对“C”进行微小的更改,这恰好与其他人的工作发生冲突,但你不希望每次将你的焦点工作推到你的“主人”的地方时也合并“C”的麻烦是。
AFAIK,git 中的更改集是原子的,并且不了解文件;因此,没有办法从合并中排除文件,除非解决合并冲突以支持您喜欢的修订版。
不过,也许还有另一种方法可以摆脱你的处境。
您可能希望将“C”分解到一个单独的库中,并为其拥有一个单独的 git 存储库。您的项目将分为多个存储库。但不用担心,git 会让你通过子模块来管理它。
请在此处查看有关如何执行此操作的详细信息。
子模块将允许您查看“C”的给定修订版,并将您的工作集中在源代码的不同部分。然后,您可以独立于任何人对“C”所做的更改来编辑、提交和合并您的工作。
关于并发变更的管理,开源版本控制的通常立场是 VC 不能替代与团队成员的沟通。就总体开发方法达成一致,尽量减少并发的不兼容变更,开发过程就会变得不那么痛苦。