在原始仓库接受拉取请求后,有没有办法在 fork 中压缩提交?
Posted
技术标签:
【中文标题】在原始仓库接受拉取请求后,有没有办法在 fork 中压缩提交?【英文标题】:Is there a way to squash commits in fork after pull request was accepted to original repo? 【发布时间】:2019-09-09 20:42:26 【问题描述】:我有一个存储库的分支,我正在其中编写我的部分代码。我在将代码(通常是大约 50-100 行 sql 代码)写入 fork 的 master 分支(虽然当时我没有意识到)然后拉取请求的 fork 的 master 分支时犯了很大的错误进入主分支。
原始仓库中的设置只允许我压缩和合并提交。所以现在我处于每个拉取请求都像 60 次提交和 1 个文件更改的情况(我工作的实际情况)。
有没有办法以某种方式同步原始 repo 和 fork 的状态,以从 master 分支中删除所有不必要的提交?
【问题讨论】:
您正在寻找rebase
【参考方案1】:
快速解答
首先,在您的fork
中使用fetch
获取有关origin
状态的信息(原始回购)
然后,您将能够比较它们的状态并决定您要做什么。
您将能够重写 fork
的历史记录以匹配 origin
不过,要更改 origin
以匹配您的 fork
会更加困难:
origin
的推送权限才能重写历史记录
如果您没有,则需要与可以为您做的人协调
由于origin
与其他人共享,因此需要通知他们,因为这可能会打断他们正在处理的事情
有关哪些操作可以帮助您实现这一目标的更详细答案,您需要提供有关origin
和您的fork
的当前状态的更多细节,以及您打算为它们提供的状态。此命令可能会有所帮助:
git log --graph --oneline --decorate
【讨论】:
【参考方案2】:经过一番研究,我设法找到了可行的解决方案:
在第一次提交之前查找提交哈希 git reset --hard git push -f origin master git pull 上游master git push origin master而且我的 fork (origin here) 与上游同步。
【讨论】:
“你的第一次提交”是指fork的第一次提交还是自fork的最新PR以来最新工作的第一次提交? 我已经有一段时间没有解决这个问题了,但如果我没记错的话,这是 fork 的第一次提交以上是关于在原始仓库接受拉取请求后,有没有办法在 fork 中压缩提交?的主要内容,如果未能解决你的问题,请参考以下文章