【问题标题】:Is there a way to squash commits in fork after pull request was accepted to original repo?在原始仓库接受拉取请求后,有没有办法在 fork 中压缩提交?
【发布时间】:2019-09-09 20:42:26
【问题描述】:

我有一个存储库的分支,我正在其中编写我的部分代码。我在将代码(通常是大约 50-100 行 sql 代码)写入 fork 的 master 分支(虽然当时我没有意识到)然后拉取请求的 fork 的 master 分支时犯了很大的错误进入主分支。

原始仓库中的设置只允许我压缩和合并提交。所以现在我处于每个拉取请求都像 60 次提交和 1 个文件更改的情况(我工作的实际情况)。

有没有办法以某种方式同步原始 repo 和 fork 的状态,以从 master 分支中删除所有不必要的提交?

【问题讨论】:

  • 您正在寻找rebase

标签: git pull-request git-fork


【解决方案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 的第一次提交
    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 2015-10-18
    • 2021-06-24
    • 2011-02-04
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多