如何使用两个repository或维护两套独立的commit提交历史
双独立提交历史仓库搭建方法
直接维护两个物理隔离的Git仓库即可,操作步骤如下:
- 本地创建第一个个人私有仓库,路径可设为类似
~/work/pyapp_personal,绑定你自己的私有远程仓库(个人专属的Git存储空间即可)。日常开发的所有中间调试版本、任意粒度的零散commit全部提交到这个仓库,想怎么留存状态都可以,完全不用受团队提交规范约束。 - 本地创建第二个公共协作仓库,路径可设为类似
~/work/pyapp_public,绑定团队公共远程仓库地址。仅在你需要提交正式版本时操作这个仓库:将个人仓库中对应正式版本节点的代码文件(排除个人仓库下的.git目录,避免串入个人提交历史)拷贝到公共仓库目录,按照团队规范编写正式提交信息后,推送到团队公共远程即可。
操作注意:不要给两个仓库互相添加对方为remote,也不要执行跨仓库的
merge/cherry-pick等提交同步操作,就能保证两边提交历史完全独立,互不干扰。
更轻量的单仓库优化方案(推荐)
维护两个独立仓库的拷贝同步成本比较高,用Git原生功能就能在同一个仓库下实现需求,维护成本更低:
- 从团队公共仓库拉取代码到本地后,基于团队的公共开发分支(通常是
main或dev)切出你的专属个人开发分支,比如命名为dev_<你的名字>_local。这个分支上你可以自由提交所有中间状态,哪怕几十上百个零散调试commit都没关系,可以绑定自己的私有远程做备份,永远不要直接把这个分支推到团队公共仓库。 - 当开发到需要提交正式版本的节点时,整理提交后再推公共仓库,两种常用整理方式:
- 如果你的本次正式版本只需要对应一条规范提交:先切回公共基准分支拉取最新团队代码
git checkout main && git pull,再执行压缩合并git merge --squash dev_<你的名字>_local,此时你个人分支上的所有改动都会汇总到暂存区,编写符合团队规范的正式提交信息后commit、推到公共仓库即可,公共仓库只会留存这一条干净的正式提交记录,不会带任何中间commit。 - 如果你需要把本次改动拆成几条逻辑独立的正式提交:执行
git rebase -i <公共分支最新commit号>进入交互式变基界面,把零散的中间提交按需标记为squash/fixup合并到对应逻辑的提交下,修改提交信息为规范内容,整理完成后推到公共仓库即可。
- 如果你的本次正式版本只需要对应一条规范提交:先切回公共基准分支拉取最新团队代码
- 日常开发过程中可以随时给个人开发分支打标签、推私有远程做备份,完全不会影响公共仓库的提交历史整洁度。
内容的提问来源于stack exchange,提问作者ManInMoon
相关产品推荐
相关产品推荐

