拉取请求覆盖先前的提交

时间:2012-09-16 08:14:35

标签: git github merge pull-request

我是Git的新手所以请耐心等待。

我有一个Git存储库(在GitHub上),我有很多对Git缺乏经验的编码员。当我雇用他们时,我要求他们向我的存储库发出拉取请求,以便我可以在合并之前查看他们的更改。目前,我最大的问题是,经常在更改后将更改合并到我的存储库中,但是在他们发出拉取请求之前,这意味着合并他们的拉取请求会覆盖先前的提交。

我有没有办法确保除了告诉他们避免这个问题之外不会发生这种情况?

2 个答案:

答案 0 :(得分:2)

确保不会发生这种情况的方法是拒绝任何无法以快进方式应用的提交。
但是没有任何东西阻止用户在没有首先更新他/她自己的分支的情况下提交拉取请求。

应该以快进的方式应用正确的拉取请求,这意味着贡献者应该首先在目标仓库的最新提交(即git pull --rebase)之上重新定义他/她的工作,发出拉取请求之前。

换句话说,他们应该首先整合您在其本地仓库中合并的其他更改,测试他们的贡献是否仍然有效,之前拉取请求。
如果他们这样做,那么覆盖之前的提交就没有任何问题 如果有,你只需拒绝拉取请求,要求贡献者首先重新定位本地仓库。

答案 1 :(得分:1)

困难的方法:让他们在合并前创建一个(本地)分支。

简单方法:让我们忘记“如何避免问题”,告诉他们如何解决问题。在git中,我们有git reflog可以回滚(几乎)任何更改。

P.S。合并不会“覆盖”先前的提交。即使您没有reflog,也可以使用git log ; git reset修复(大部分)。