如何在无意的分支推送后修复我的 Git HEAD?

问题描述 投票:0回答:1

我已经成为 Git 用户很多年了 - 在 Windows 中。我以前使用CLI+Tortoise Git,很少遇到问题。我切换到 Linux (kubuntu 23.10),安装 VS Code(漂亮,顺便说一句),并安装了 Git Graph 扩展(真的,哇)。然后,当我在分支机构工作时,我提交了我的工作,然后发生了一些事情:看来我的存储库现在有两个头。我不想撤消提交,而是通过修复来纠正问题;与此同时,工作仍在继续。快照显示了我的存储库的一些样子,并且线路没有连接回根。

enter image description here

我试图(仅)在本地提交分支更改 - 但随后“工具”推送了我的更改并创建了另一个头?不知道如何解决这个问题,通常,我在本地提交,切换到master,然后合并。这就是我认为会发生的事情 - 但“工具”比我聪明。

尝试了其中一项变基建议,结果如下:

`djorg@DESKTOP-25485G2 MINGW64 ~/AppData/Roaming/MetaQuotes/Terminal/6BCF14A3917E5BC71FD48812B8ED0586/MQL4(主) $ git Push 原点大师 枚举对象:9,完成。 计数物体:100%(9/9),完成。 使用最多 12 个线程的增量压缩 压缩对象:100% (5/5),完成。 写入对象:100% (5/5), 308.80 KiB | 34.31 MiB/s,完成。 总计 5 (增量 3),重复使用 0 (增量 0),包重复使用 0 远程:解析增量:100% (3/3),用 3 个本地对象完成。 至 https://github.com/djorgens2/MT4-Master.git efa5240..bf6bcee 主控 -> 主控

djorg@DESKTOP-25485G2 MINGW64 ~/AppData/Roaming/MetaQuotes/Terminal/6BCF14A3917E5BC71FD48812B8ED0586/MQL4(主) $ git rebase 原始主机 当前分支主控是最新的。

djorg@DESKTOP-25485G2 MINGW64 ~/AppData/Roaming/MetaQuotes/Terminal/6BCF14A3917E5BC71FD48812B8ED0586/MQL4(主) $ git pull origin -r master 来自https://github.com/djorgens2/MT4-Master

  • 分支主控 -> FETCH_HEAD 已经是最新的了。

djorg@DESKTOP-25485G2 MINGW64 ~/AppData/Roaming/MetaQuotes/Terminal/6BCF14A3917E5BC71FD48812B8ED0586/MQL4(主) $ git 切换 man-v5 切换到新分支“man-v5” 分支“man-v5”设置为跟踪“origin/man-v5”。

djorg@DESKTOP-25485G2 MINGW64 ~/AppData/漫游/MetaQuotes/Terminal/6BCF14A3917E5BC71FD48812B8ED0586/MQL4 (man-v5) $ git 切换大师 切换到分支“master” 您的分支已更新为“origin/master”。

djorg@DESKTOP-25485G2 MINGW64 ~/AppData/Roaming/MetaQuotes/Terminal/6BCF14A3917E5BC71FD48812B8ED0586/MQL4(主) $`

git branch head repo gitgraph.js
1个回答
0
投票

如果您无意中将分支推送到远程存储库并需要修复 Git HEAD,您可以采取一些步骤来恢复。该过程将取决于您推送的分支是否是您打算推送的分支,或者您是否意外推送了不同的分支。以下是您可以遵循的一般步骤:

如果你推错了分支:

  1. 识别远程存储库中的正确提交:

    • 转到您的远程存储库(例如 GitHub、GitLab、Bitbucket)并找到您希望本地分支指向的提交 SHA 或分支名称。
  2. 将本地分支重置为正确的提交:

    • 打开终端并导航到本地存储库。
    • 使用以下命令将分支重置为正确的提交:
      git reset --hard <commit-SHA-or-branch-name>
      
      <commit-SHA-or-branch-name>
      替换为您在步骤 1 中确定的实际 SHA 或分支名称。
  3. 强制将更正后的分支推送到远程存储库:

    • 由于您重写了提交历史记录,因此您需要将更正的分支强制推送到远程存储库。
      git push origin <branch-name> --force
      
      <branch-name>
      替换为您的分支名称。

如果您将更改推送到错误的分支:

  1. 识别正确的分支并提交:

    • 找到您想要将更改推送到的分支并提交。
  2. 为您的更改创建一个新分支:

    • 创建一个新分支来跟踪您的更改。
      git checkout -b new-branch-name
      
  3. 精挑细选更改:

    • 挑选您不小心推送到错误分支的提交或提交范围。
      git cherry-pick <commit-SHA1>
      
  4. 将新分支推送到远程存储库:

    • 将新分支推送到远程存储库。
      git push origin new-branch-name
      
  5. 删除误推的分支:

    • 如果您将更改推送到错误的分支,您可能需要从远程存储库中删除该分支。
      git push origin --delete <mistaken-branch-name>
      

强制推送时务必小心谨慎,尤其是在与其他人协作时,因为它可能会重写历史记录,并给拉取更改的协作者带来问题。如果其他人正在使用您强制推送的分支,他们将需要相应地更新其本地存储库。

© www.soinside.com 2019 - 2024. All rights reserved.