一次成功的Git分支统一实战
我:我想到之前的那个关于 Git 分支的聊天记录还不完整,最后应该包含我如何解决这个问题的。我希望能把本地和远程仓库统一起来,应该怎么做?
朋友:好的!之前我们聊了原理,现在是时候动手把本地和远程仓库统一了。解决这个问题很简单,最干净利落的方法就是删除旧的部署缓存,让 Hexo 按照你最新的配置重新生成。
具体步骤是:
- 打开终端,删除旧的
.deploy_git文件夹。 - 执行
hexo clean && hexo d,根据你_config.yml里branch: main的配置重新生成并推送。 - 验证结果,检查 GitHub 仓库和 VS Code 源代码管理面板。
我:好的,我来试试。不过我在终端里执行 rm -rf .deploy_git 的时候报错了,提示 Remove-Item : 找不到与参数名称“rf”匹配的参数。 这是怎么回事?
朋友:哈,这是 PowerShell 和 Linux 终端命令的一个小差异。rm -rf 是 Linux(或 Git Bash)里的命令,在 PowerShell 里不通用。
在 PowerShell 中,删除文件夹要用 Remove-Item 命令。你可以直接输入:
powershell
1 | Remove-Item .deploy_git -Recurse -Force |
或者,你也可以在 VSCode 终端里切换成 Git Bash 环境,就能直接用 rm -rf 了。
我:好的,我用 Git Bash 试试。
bash
1 | tongshixuan@DESKTOP-XXXX MINGW64 /d/blog/my-blog01 (main) |
成功了!然后我执行 hexo clean && hexo d,出现了一大堆输出,最后好像成功了。你帮我看看关键的几行?
朋友:太棒了!我看到最关键的两行日志是:
text
1 | To https://github.com/tristan1116/tristan1116.github.io.git |
这完全验证了成功!
- **
HEAD -> main**:说明你本地的当前分支直接推送到了远程仓库的main分支。 - **
(forced update)**:这是正常的,因为远程main分支之前的内容和你本地不同,这次推送是“强制覆盖”了它。 - 最后一句:
branch 'master' set up to track ... main明确表示,你本地的master分支现在已经设置为跟踪远程的main分支了。
我:还有一件事,我之前在 VS Code 的源代码管理里能看到两个存储库:my-blog01 和 .deploy_git。但现在 .deploy_git 不见了,只剩下 my-blog01 一个了。这是为什么?
朋友:你观察得很仔细!这是因为 VS Code 检测到了“嵌套仓库”的结构,为了界面清晰,它智能地将内层的 .deploy_git 隐藏了。
之前显示两个,是因为外层仓库工作在 main 分支,内层仓库工作在 master 分支,分支不一致,VS Code 认为它们是两个独立的工作区。
现在内层仓库(.deploy_git)通过跟踪关系,逻辑上已经和 main 分支绑定在一起了,VS Code 就默认隐藏了它,只展示你最需要操作的主仓库。
这其实是更好的状态,你的界面更清爽了,.deploy_git 依然存在,只是安静地在后台工作。
我:那为什么不能直接让本地仓库也叫 main,为什么还得叫 master?
朋友:这个问题问得特别好!这是 Hexo 这个工具“硬编码”决定的,它不随你的配置而改变。
具体来说:
- Git 本身不关心分支叫什么,
master或main都只是标签。 - 但 Hexo 在执行
hexo d时,会在.deploy_git里初始化一个全新的 Git 仓库,它使用的是你电脑上 Git 的默认分支名。 - 你的 Git 全局配置很可能还保留着旧的默认值
master,所以 Hexo 只是“机械地”创建了一个叫master的本地分支。
不过,Hexo 不在乎本地分支叫啥,它只关心最终能不能推送到你指定的远程分支。只要推送成功,任务就完成了。
我:但是现在其实已经没关系了对吧?
朋友:完全正确! 你现在可以彻底放心了,这个问题已经彻底解决,而且完全不影响你日常的使用。
- 你的博客能正常更新。
- VS Code 界面清爽。
- 底层逻辑通顺。
从今以后,你只需要记住一个流程:
- 写文章。
- 在
my-blog01仓库执行 hexo clean git add .、git commit -m "..."和git push
至于 .deploy_git 里的分支叫什么,你完全可以当它不存在,它只是一个在幕后默默工作的工具人。
我:哈哈,我彻底搞懂了!Git 确实很神奇,也好玩!这次经历一定要完整地写进博客里。
朋友:哈哈,太好了!你不仅解决了问题,还亲手验证了 Git 分支的底层逻辑。这次完整的学习经历,从“为什么错位”到“如何统一”,绝对是一篇绝佳的 Git 实战案例!祝你写博客愉快!🎉
最终结论:从最初只会“三板斧”,到发现
master能推送到main的“神奇”现象,再到彻底理解分支是指针而非复制,最后亲手完成了本地与远程仓库的统一。这个过程让我对 Git 的理解上了一个大台阶。记录下来,既是对这段学习经历的纪念,也希望能帮到其他遇到类似困惑的朋友。