【问题标题】:git 1 commit behind with fork, trying to solve thisgit 1 用 fork 提交,试图解决这个问题
【发布时间】:2021-07-10 23:54:16
【问题描述】:

我在 github 上创建了一个 repo,做了一些更改,提交了 PR,然后问题就开始了 :)

PR 被接受并且是主要代码库的一部分。然后今天我看到 PR 不再是代码库的一部分,它正在等待处理。好像它被还原了,不知道发生了什么。

现在,github 向我展示了这个:

这个分支提前 8 次提交,后面 1 次提交

我想赶上,而不是落后于 1 个提交。

> git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

所以我做到了:

>  git pull upstream master
From github.com:...
 * branch            master     -> FETCH_HEAD
Successfully rebased and updated refs/heads/master.

> git status
On branch master
Your branch and 'origin/master' have diverged,
and have 7 and 8 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

nothing to commit, working tree clean

然后我做:

> git pull
Successfully rebased and updated refs/heads/master.

> git push
Everything up-to-date

我仍然落后 1 个提交......

如何解决?


编辑:

这是所有分支的截图


编辑2:

输出:

git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C( reset) %C(wh​​ite)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all

【问题讨论】:

  • thomas 可以转到您的报告并输入命令gitk 并截取所有分支/引用和提交,以便每个人都可以看到发生了什么?事情在哪里分歧?如果您这样做,我们可以为您提供非常具体的命令来帮助您到达您想去的地方
  • @BKSpureon 感谢您的帮助;我添加了所有分支的截图
  • 您的拉动似乎正在变基。考虑不改基,因为那会修改历史?
  • Thomas,你需要显示类似这样的内容:i.stack.imgur.com/Q6oU3.png,或者发布一个显示提交 ID 的图表,否则很难理解你现在回购的是什么以及在哪里。跨度>
  • @BKSpureon,我明白你现在的意思了。这是:imgur.com/a/J5ZwbRn

标签: git github


【解决方案1】:

好的,我想我知道发生了什么。但我可能是错的,所以请仔细检查我写的所有内容,尤其是 git 中的破坏性操作。

请确认以下提交实际上是相同的:de7be46 和 48bab83。一切都基于这些基本相同:diff <(git show de7be46) <(git show 48bab83)

git checkout master

git checkout -b my-pr

git reset --hard 73fff1d

git cherry-pick 5b9f65f

我们想要挑选,因为我们想要保留这个提交。我认为my-pr 分支现在将包含与您的 PR 相关的所有提交。

现在你的 my-pr 分支和 upstream/master 应该偏离提交:1c85914。我假设你的 PR 工作是从 commit: 469ff29 开始的。 (顺便说一句,如果是这种情况,我建议从不同的分支(即不是主分支)制作所有 PR,以避免将来混淆。)

如果您对一切正常感到满意,那么您可以重置您的主分支:

git checkout master

这会移动指针,并使您现有的提交悬而未决-“破坏性”也是如此: git reset --hard upstream/master

这将是破坏性的: git push origin master --force

现在您的本地 master 和上游分支以及 origin/master 将同步。

您的公关工作将位于分支:my-pr。你可以像以前一样继续:做一个新的 PR,或者放弃工作等等。

【讨论】:

  • “git cherry-pick fb9f65f”返回“致命:错误修订版'fb9f65f'”
  • 那是错误的提交 ID:试试这个:5b9f65f --(顺便说一句,你明白我们在这里要做什么吗?)
  • 实际上没有,我没有。我确实尝试过,但它确实破坏了 PR,因为我有备份,这无论如何都不是很重要; pr 也不存在于新分支中。我会好奇的是首先发生了什么?我不明白导致该问题的步骤。
  • 如果你不明白那是个大问题。 Git 会跟踪所有内容,因此您的 PR 存在于 repo 中的某个位置——我对您的 PR 分支提交的内容/位置做出了假设。基本上,您可能希望在单独的分支中获取与您的 PR 关联的提交,从而允许您到当前的 master / origin 分支来跟踪上游的内容。然后当你准备好时,合并你的 PR 分支。使用 git 的一个重要部分是了解如何恢复:我建议您花点时间查看您的提交历史记录和 reflog 以了解发生了什么。
  • 我查看了历史记录,但找不到问题所在。虽然我对 PR 功能不是很熟悉(我第二次使用它),但我仍然不明白为什么会发生这种“落后”的情况,也不明白为什么我无法赶上。
【解决方案2】:

运行以下命令-

  1. git pull--rebase origin master
  2. git 获取来源
  3. git merge origin >>
  4. git pull origin >>

通过执行-'git status' 命令检查状态。 这将显示有未合并的路径。 现在运行 'git add -all' 命令重新运行 commit 和 push 命令以将本地更改合并到 master 分支。

【讨论】:

  • 你为什么要运行两个 pull 和一个 fetch?
  • 我只是做了所有这些:imgur.com/a/fVwWHcP 但没有改变
猜你喜欢
  • 2022-11-26
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
相关资源
最近更新 更多