更新已删除的分支后出现问题

问题描述 投票:0回答:2

我在一些回购中创建了一个PR,我从本地删除了该分支。过了一会儿(当几次提交在repo中合并时)我想在PR中进行更改,所以我创建了具有相同名称的分支并提取了所有更改并添加了更多提交。但是当我推动更改时,它会显示回购的所有提交(大约3k提交)。

我想问题是,最初分支是用master的不同状态创建的,当我再次创建分支时它处于不同的master状态,所以一推动,所有差异都反映在PR中作为3k提交。

现在我想摆脱这个问题。我只希望展示PR的提交。这怎么可能?

git github
2个回答
2
投票

你可以试试这个

首先找到你的旧提交

git log --after="2014-7-1" --before="2014-7-4" --author="John"

您可以找到有关格式化日志输出here的更多信息。

在您的本地分支中将HEAD重置为旧提交,并选择新提交 qazxsw poi qazxsw poi qazxsw poi qazxsw poi

这将创建您的PR只有旧提交和新提交。基本上,您将从分支中删除master中的所有提交。

你的分析似乎是正确的。您创建PR时,主人处于不同的状态。

虽然你拉后不需要创建一个新的分支。您已删除本地仓库中的分支,而不是远程。

你可以做一个git reset <old commit ID>git stash; git stash drop,你的本地仓库将以你留下的状态重新创建分支。


1
投票

我认为你的结论是正确的。您似乎已将所有更改从master推送到您的分支。

在继续之前我会做一些假设:

  • 你首先从大师那里扩展出来
  • 你想在未来的某个时候将你的分支合并到主人他们主要是为了我列出的第三个解决方案。

摆脱这种我可以想到的几种方式:

  • 从master和cherry中创建一个新的分支,从pr的原始状态和你所做的更改中选择所有提交。但是,如果您对cherry pick进行了大量更改,并且/或者由于对master分支的中间更改,您之后所做的更改与旧更改冲突,则可能会出现问题。
  • 克隆repo,在推送新的更改之前检查最新提交的分支,尝试强制推送分支(我假设没有其他人将自己的更改推送到该分支)然后应用您的更改。潜在问题:“强制推动”通常在星球大战宇宙中效果更好,而不是在git ...
  • 将master合并到您的分支中。假设您的最终目标是在某个时刻将分支合并为主,这可能是最佳选择。问题:根据我的经验,github PR diff预览有时会混淆并继续显示在做过类似事情之后已经在master中的更改。通常创建一个新的pr有助于此。另一个明显的问题是来自master的任何更改会影响在分支上编辑的文件 - 冲突或只是模糊意图。

可能还有一些方法可以使用恢复来扭曲你的方式,但这不是我的第一个选择(也许你会得到一些其他答案的解决方案)。我的建议是我上面列出的最后一个 - 将master与你的分支合并(考虑所有假设)。

P,对不起,如果它太冗长,但希望它会帮助你。很想知道其他答案。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.