问题 如果您强制推送到具有现有拉取请求的分支,会发生什么?


我正在开发一个git分支,它目前是github上一个关闭的pull请求的一部分。在初始拉取请求之后,我做了一些额外的提交,将这些提交推送到github,然后还原那些提交并重新发送它们,因为我需要修改提交。

现在,如果我想将这些提交推送到github,我需要发出一个强制推送: git push --force。但我强烈认为这可能会导致现有的pull请求出现混乱,即使更改的提交发生在我发出pull请求之前存在的提交之后。

任何人都可以向我描述如何最好地处理这种情况?我想我可能只需要创建一个全新的分支,然后在该分支上发出拉取请求。但是,如果有办法将此链接与现有的拉取请求相关联,那么这将是更可取的。


5112
2017-09-02 07:06


起源



答案:


如果我的记忆正确地为我服务,那么如果您以任何方式强制推送或更新有问题的分支,GitHub将自动更新拉取请求。如果执行强制推送会导致拉取请求无法执行,那么GitHub会告诉您这一点。

您无需担心更新拉取请求,因为GitHub将为您处理此问题。

这就是说,做一个 git push --force 上 任何 远程分支 能够 对于同时也在这个分支机构工作的同事造成混乱。因此,你回避强迫推力是正确的,但幸运的是,GitHub拉取请求不是你最大的问题。


10
2017-09-02 07:11



所以,只是为了清楚,你所说的是这里的危险与拉动请求无关,而是与其他人可能在这个分支上工作的可能性有关? - fraxture
这是我的感受。 GitHub拉取请求实际上并不存在于Git中,它只是一个潜在的操作(合并) 威力 如果有人点击绿色按钮就会发生(如果GitHub无法进行合并,则按钮将无法点击)。另一方面,如果你通过强制推动重写远程分支的历史,那么任何拉动的人都会得到一个难看的惊喜。 - Tim Biegeleisen
对于这样的用户,比如说他们刚刚在他们自己的机器上查看/测试我在那里完成的工作,如果他们要在本地删除分支然后再重新拉动它,这会解决问题,对吗? - fraxture
@fraxture是的,那应该没关系。但请告诉他们你在做什么,所以没有惊喜。 - Tim Biegeleisen
没有其他人在这个分支上工作。所以我唯一担心的是它是否会破坏当前的拉动请求,正如我之前提到的那样,并且已经有一些我想要保留的讨论。提交历史记录的更改与自初始讨论后提交的提交有关。但我想我很好奇github关于初始提交的现有讨论会发生什么。由于整个分支历史将被重写,这是否意味着这些评论将被刷新? - fraxture


答案:


如果我的记忆正确地为我服务,那么如果您以任何方式强制推送或更新有问题的分支,GitHub将自动更新拉取请求。如果执行强制推送会导致拉取请求无法执行,那么GitHub会告诉您这一点。

您无需担心更新拉取请求,因为GitHub将为您处理此问题。

这就是说,做一个 git push --force 上 任何 远程分支 能够 对于同时也在这个分支机构工作的同事造成混乱。因此,你回避强迫推力是正确的,但幸运的是,GitHub拉取请求不是你最大的问题。


10
2017-09-02 07:11



所以,只是为了清楚,你所说的是这里的危险与拉动请求无关,而是与其他人可能在这个分支上工作的可能性有关? - fraxture
这是我的感受。 GitHub拉取请求实际上并不存在于Git中,它只是一个潜在的操作(合并) 威力 如果有人点击绿色按钮就会发生(如果GitHub无法进行合并,则按钮将无法点击)。另一方面,如果你通过强制推动重写远程分支的历史,那么任何拉动的人都会得到一个难看的惊喜。 - Tim Biegeleisen
对于这样的用户,比如说他们刚刚在他们自己的机器上查看/测试我在那里完成的工作,如果他们要在本地删除分支然后再重新拉动它,这会解决问题,对吗? - fraxture
@fraxture是的,那应该没关系。但请告诉他们你在做什么,所以没有惊喜。 - Tim Biegeleisen
没有其他人在这个分支上工作。所以我唯一担心的是它是否会破坏当前的拉动请求,正如我之前提到的那样,并且已经有一些我想要保留的讨论。提交历史记录的更改与自初始讨论后提交的提交有关。但我想我很好奇github关于初始提交的现有讨论会发生什么。由于整个分支历史将被重写,这是否意味着这些评论将被刷新? - fraxture


pull请求的内容将是为pull请求发送的分支中的任何内容。因此,当你 git push --force,PR将在您刚刚推送到的分支中反映您修改后的提交历史记录。


1
2017-09-02 07:09





使用现有的pull请求推送到分支 会更新 pull请求,提交完成并不重要  拉请求。

如果您不想更改拉取请求,则应创建一个  分支和工作。


1
2017-09-02 07:09





使用后 git push --force 在常规 但是关闭了  GitHub PR 今天我不能重新打开它,因为按钮被禁用,并显示以下消息:

patch-1分支被强制推送或重新创建。

但是,每 艾萨克斯/ github上#361 (特别 这个),这似乎只发生在封闭的PR上。


0
2018-04-29 21:11