我已经成为 Git 用户很多年了 - 在 Windows 中。我以前使用CLI+Tortoise Git,很少遇到问题。我切换到 Linux (kubuntu 23.10),安装 VS Code(漂亮,顺便说一句),并安装了 Git Graph 扩展(真的,哇)。然后,当我在分支机构工作时,我提交了我的工作,然后发生了一些事情:看来我的存储库现在有两个头。我不想撤消提交,而是通过修复来纠正问题;与此同时,工作仍在继续。快照显示了我的存储库的一些样子,并且线路没有连接回根。
我试图(仅)在本地提交分支更改 - 但随后“工具”推送了我的更改并创建了另一个头?不知道如何解决这个问题,通常,我在本地提交,切换到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
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 HEAD,您可以采取一些步骤来恢复。该过程将取决于您推送的分支是否是您打算推送的分支,或者您是否意外推送了不同的分支。以下是您可以遵循的一般步骤:
识别远程存储库中的正确提交:
将本地分支重置为正确的提交:
git reset --hard <commit-SHA-or-branch-name>
将 <commit-SHA-or-branch-name>
替换为您在步骤 1 中确定的实际 SHA 或分支名称。强制将更正后的分支推送到远程存储库:
git push origin <branch-name> --force
将 <branch-name>
替换为您的分支名称。识别正确的分支并提交:
为您的更改创建一个新分支:
git checkout -b new-branch-name
精挑细选更改:
git cherry-pick <commit-SHA1>
将新分支推送到远程存储库:
git push origin new-branch-name
删除误推的分支:
git push origin --delete <mistaken-branch-name>
强制推送时务必小心谨慎,尤其是在与其他人协作时,因为它可能会重写历史记录,并给拉取更改的协作者带来问题。如果其他人正在使用您强制推送的分支,他们将需要相应地更新其本地存储库。