我有两个git存储库。一个包含基本开发,另一个包含实际项目,应基于此基础。
所以我创建了两个遥控器:原点和 base 。
首先,我克隆了空的原始存储库。然后我拉出了基本遥控器(base / master)的主分支并将其推送到origin remote(origin / develop)的develop分支。我先在本地做了这个,然后把它推到远程仓库。
到目前为止,这么好。这有效。当使用rebase在base / master中出现新提交时,还更新origin / develop分支。然后,新提交也会出现在我的项目存储库中。太好了!
现在我的问题是,在原始仓库中存在的其他分支会发生什么?我的意思是发展是我的主要分支。所有更新都将在那里进行,这样可行。
但是,当其他人创建了例如基于develop的功能分支,该分支不会自动获得更新。所以我需要使用develop来修改这个功能分支,我猜。
这是使用develop:
重新定义功能分支后的历史记录看起来非常完美。功能分支的提交仍然是独立的,并且基于下面的两个提交,这些提交已经从origin / master重新定位。
当我尝试按此时,遥控器将拒绝推送。执行拉动后,我得到了这个结果:
这些是提交ID(前4次提交):
fbcc9cb (feature/proto) [TASK] Update iw_base
e3b03c9 (feature/proto) [TASK] Exclude README.md from direct access
d0e006f (develop) [TASK] Update iw_base
02bdedd (develop) [TASK] Exclude README.md from direct access
提交现在在功能分支中重复。当我稍后将pull请求与develop分支合并时,这些提交将显示重复。我的最后一个问题是:我怎样才能避免这种情况?
我可以执行强制推送功能分支...但我听说这不是推荐的方式,因为当其他分支基于它们时,它可能会导致冲突。
谢谢!