gpt4 book ai didi

Git:撤销未知错误

转载 作者:太空狗 更新时间:2023-10-29 13:54:59 25 4
gpt4 key购买 nike

我有一些非常困惑的 git 存储库,我想弄清楚一些东西。

在我的本地机器、bitbucket 以及除一台生产机器之外的所有机器中,我都有以下历史记录:

(本地和 bitbucket)

* 1a84374 (HEAD, master) message
*
*
|\
| *
| *
* |
* | ea2d82c message
|/
* ccd87f7 message
*
*

最近出现了一个问题,我必须通过 ssh 进入我的一台生产机器并快速在上面编写代码。想象一下时间极其紧迫的事情。我想因为我太仓促了,我一定是在那个 repo 协议(protocol)中破坏了一些东西。我记得做了一些 rebase ,我猜这就是错误所在。无论如何,我将新代码保存到一个新分支中。在这台生产机器中,历史现在突然变成了这样

* db19412 (HEAD, quickfix) message
* 57f8865 (origin/master, master) Merge branch 'master' of https://bitbucket.org etc etc
|\
| * 1a84374 message
| *
| *
| |\
| | *
| | *
| * |
| * | ea2d82c message
| |/
* | 39052e5 Merge branch 'master' of https://bitbucket.org etc etc
|\ \
| |/
| * ccd87f7 message
* |

您会注意到现在有一​​条额外的线将新提交与一些更旧的提交连接起来。我想我一定是在 rebase 上犯了一些错误。我想摆脱它,但我仍然想保留我添加的新代码(在分支 quickfix 中)并最终将其推送到 bitbucket。即,提交 db19412 应该直接连接到 1a84374

那么我该如何摆脱只会让代码库变得过于复杂的额外行呢?

编辑:因为这个问题围绕着撤消某些事情展开,所以我一直在尝试这种方式。我尝试过的其中一件事是经典的“撤消上次提交”。我将自己置于 57f8865 并使用命令 git reset --hard HEAD~1 希望作为第一步我至少可以带上 master 回到 1a84374。这是生成的历史记录:

* db19412 (quickfix) message
* 57f8865 (origin/master) Merge branch 'master' of https://bitbucket.org etc etc
|\
| * 1a84374 message
| *
| *
| |\
| | *
| | *
| * |
| * | ea2d82c message
| |/
* | 39052e5 (HEAD, master) Merge branch 'master' of https://bitbucket.org etc etc
|\ \
| |/
| * ccd87f7 message
* |

我完全迷路了。

EDIT2:我想我可以做的一件事是将 quickfix 中的更改复制到我本地机器的一个新分支中,将其推送到 bitbucket,然后在该生产机器上核对搞砸的 repo,然后他们从 bitbucket 重新克隆。但那样我就什么也学不到了 :D

最佳答案

git checkout 1a84374
git cherry-pick db19412

这会将您的 quickfix 添加到您想要的提交的顶部。现在,这段历史可以与来自 1a84374 的其他工作 merge 。

下一步:

  • 将此更改添加到本地分支: git checkout -b branch_name,或
  • 将此更改推送到远程分支: git push HEAD:remote_branch

关于Git:撤销未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38731191/

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