如何分离Git的私有提交与公开提交历史?
解决多设备切换时Git提交历史混乱的方案
方法一:用Git stash暂存本地修改
- 在一台设备上做了未完成的修改,不想提交时,执行
git stash把修改暂存起来 - 切换设备前,先拉取远程最新代码:
git pull - 回到原设备后,执行
git stash pop恢复之前暂存的修改,接着开发就行 - 这种方式完全不会产生临时提交,等功能完成后再做一次有意义的提交推送到远程
方法二:私有临时分支+合并时压缩提交
- 在本地创建一个只自己用的临时分支,比如
git checkout -b temp-dev - 在这个分支上可以随便提交临时修改,比如
git commit -m "temp: 改了XX" - 准备推送到公开仓库前,切回主分支(比如main)并拉取最新代码:
git checkout main && git pull - 把临时分支的修改合并到主分支,同时压缩所有临时提交:
git merge --squash temp-dev - 这时候所有临时提交会变成主分支的工作区修改,你可以写一个清晰的提交信息,比如
git commit -m "feat: 完成XX功能开发" - 最后删掉临时分支:
git branch -D temp-dev,再推送到远程仓库:git push
方法三:用Git worktree管理多工作进度
- 要是你需要在不同设备上保留不同的开发进度,可以用
git worktree add创建多个独立工作目录,每个目录对应不同分支 - 比如在当前仓库外创建临时工作区:
git worktree add ../temp-workspace temp-dev - 每个工作区单独处理自己的修改,最后合并到主分支时同样用squash压缩提交,避免临时提交进入公开历史
内容的提问来源于stack exchange,提问作者Pacmyc
相关产品推荐
相关产品推荐

