gpt4 book ai didi

git - 用上游历史重写起源历史?

转载 作者:太空狗 更新时间:2023-10-29 14:44:45 25 4
gpt4 key购买 nike

我在一个大型团队中工作,该团队定期压缩对上游的提交。在这一点上,我的 origin 的历史与上游有很大的不同,所以要再“同步”它们的唯一方法是重置到上游并强制推送到 origin。

有没有办法与上游“同步”或重写我的起源历史,摆脱我的“迷你”提交,并用来自上游的压扁的提交替换它们?

最佳答案

在 git 中有几种方法可以做到这一点——我将尝试解释其中的一种。假设您正在处理名为 bug_fix 的本地分支。您应该能够通过执行以下操作恢复与上游的同步:

  1. bug_fix 之外创建一个新分支:

    git checkout -b temp_bug_fix
  2. 返回到原始的 bug_fix 分支并将 HEAD 重置为本地分支与上游同步的位置。假设这是 10 次提交之前,命令将是:

    git checkout bug_fix
    git reset --hard HEAD~10
  3. 从上游 pull 所有新更改。这会将 bug_fixorigin

    同步
    git pull origin <upstream_branch>
  4. 使用适当的 SHA 从 temp_bug_fix 分支中挑选您的提交

    git cherry-pick <you_commit_SHA>
  5. 现在您已同步,您可以正常推送到上游(无需使用 -f)

    git push origin <upstream_branch>

这个答案假设您的所有更改都是在其他人做出的所有“迷你”提交之后做出的。

我很想知道您本地的分支机构最初是如何进入这种状态的。标准做法是开发人员应该在推送到源之前压缩他们的提交。一旦本地分支已 merge 到上游,任何人都不应使用强制推送来更改历史记录 - 这只会带来麻烦。

关于git - 用上游历史重写起源历史?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34957250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com