在peril中
建议在存储库是公共的情况下不应该进行重基。
最近在git merge vs rebasing上发表的一篇文章
建议不应在开发人员之间共享的分支上进行重基。
我理解,因为开发人员可能首先合并代码,然后决定重新定位代码,因此其他开发人员最终可能会创建多个重复提交,正如在rebase的危险中所解释的那样。
如果所有的开发人员都有一个共同的协议,即每个人都要重新建立代码的基础,而不是进行合并,那该怎么办?这项建议是否仍然适用?
P.S
所有这些答案都让我困惑。我想我会重新讨论这个问题。
假设有两个开发人员在两台不同的计算机上工作。有一个中央存储库。这两个开发人员克隆并开始工作。
开发人员1:
开发人员2:
开发人员1:
开发人员2:
诸若此类。开发人员1&2总是将其分支与原点/分支重新定位,然后将它们的更改推送到原始/分支。
在功能稳定之后,最后
开发人员1:
开发人员2:
后来,这一周期又继续下去。
这是正确的吗?当两个开发人员在同一个分支上工作,并且总是想要重基而不是合并时,这是正确的方式吗?
发布于 2014-06-25 04:53:29
让我们假设没有人做交互的重基,改变历史,而只是做一个git fetch
和一个git rebase origin/branch
。在这种情况下,如果没有其他人推动他们最近的重新基地,你就可以做一个推杆,否则你就会有冲突,不得不再次重新基地。重要的是,每个人都很努力地重新建立基础,而且从来不做push -f
,因为这会给下游的每个人带来问题。
问题是你为什么要这么做。如果目标仅仅是避免合并提交,您最好使用这样的工作流:
这样,每个人都会以线性提交的方式在公共分支上提交他们的工作。
备注:留下了我最初的回复,但是根据更新的问题添加了更多的信息。
基本上,我的建议是,从事local/iss123
工作的两位开发人员在通过git pull
来回往返时,不断地合并对方的更改。一旦iss123
稳定下来,其中一个开发人员就会将其重基到主服务器上,即
git checkout iss123
git checkout -b rebase_iss123
git rebase -i master
// select first as edit (so you can change its commit message)
// and select the rest as fixup
git checkout master
git merge rebase_iss123
这将占用所有的iss123
,并将其压缩为主服务器尾部的单个提交。
现在,开发人员可以将这个主版的新发行工作分支化。
发布于 2014-06-24 13:25:54
一旦代码被推送到公共存储库,那么提交就不会发生任何更改。但是,当重新基于本地存储库时,推送就是查找。示例:我对一个特性分支进行了更改。然后我从我的特性分支的父分支中提取,通常是开发分支。然后,我可以在开发的基础上重新建立我的特性分支。然后我可以把我的开发分支推到原点。
因此,如果所有的开发人员都基于他们的本地重新定位,然后重新定位,那么推送它就可以了。
要点是,一旦在公共回购上共享了提交或分支,任何人都不能更改、重基或修改评论等。
https://stackoverflow.com/questions/24387231
复制相似问题