这是我的一个存储库中的设置:
master
branch< - 这始终在生产服务器中staging
分支(默认分支)< - 这是在登台服务器我们所做的每项更改都要经过以下步骤。
我们要说我必须对readme.md
进行更改。
staging
)创建一个新分支,让我们称之为patch-readme
patch-readme
。staging
制作公关。patch-readme
。
staging
分支机构)staging
分支部署到登台服务器。staging
创建一个新的PR到master
。master
合并回staging
。我这样做是因为如果staging
的下一个PR对readme.md
文件进行了更改,那么当我从staging
创建新的PR到master
时,我会发生冲突在那个文件上。因此,为了避免冲突,我会在每次合并PR之后合并master
。此工作流程存在问题,基本上每个从staging
到master
的拉取请求都会在几个月前引入提交,这意味着存储库中存在混乱(例如,如果存在提交引用一个问题,该问题将有一个很长的引用列表,每个新的PR创建一个。
现在,我不明白的是,有时候(我还没弄清楚在什么情况下)历史得到了清理。今天它发生在我身上,因为开发人员在合并PR之后忘记了从master
更新而我必须解决一些冲突,在解决冲突之后,新PR有一个干净的历史。我试图复制这种情况,但似乎并没有这样做。
我看过rebase,所以我在将PR从staging
合并到master
之后尝试过,而不是合并回master
我跑了在git rebase master
分支上staging
。这不起作用,master
的下一个PR仍然有历史。
有效的是,我没有创建PR到master
,而是跑
git checkout master
git rebase staging
在这种情况下,我没有做任何事情,而下一个PR的历史很干净。但这并没有多大意义,因为我们需要丢弃PR。我们正在使用PR进行代码审核。
我做错了什么?我怎样才能在staging
到master
的公关中获得干净的历史记录?
请注意,我们的开发人员通常只使用 Github Desktop 和 Github网络界面。因为我们是一个小团队,所以每个人都能够为staging
和master
创建和合并PR。
答案 0 :(得分:0)
我发现了为什么会这样。我们正在使用GitHub网络用户界面来合并PR。
基本上每个发送到分段的PR都与" Squash合并并合并"。 从分段到掌握的PR以相同的方式合并。
使用"合并提交"而不是"壁球和合并"暂存中的每个提交也出现在master中(而不是使用squash进行单次提交)。
所以,现在为了保持历史的清洁,我们正在做一个"壁球和合并"从功能分支到暂存,我们正在进行"合并提交"从分期到掌握。
希望这对其他人有帮助。