35 条回复  ·  3810 次点击
1103409364 初学 2025-6-22 19:56:28
```bash git reset --soft ``` 重新 commit 然后强制 push ,确定只有自己在操作,防止覆盖别人的提交 ```bash git push -f ```
AmoreLee 初学 2025-6-22 20:00:00
如果不需要以前那些提交记录了,最简单的方法就是删了 .git ,然后重新初始化一个提交。 只要确保当前内容是最新的就可以了。
AmoreLee 初学 2025-6-22 20:06:01
@AmoreLee 抱歉问题没看仔细。 感觉 rebase -i 然后 squash 应该是没问题的,提交都是一个个按顺序重新应用上去,不太清楚为什么会有很多的冲突。
janus77 小成 2025-6-22 20:14:48
删库不行吗?我说的是把远程仓库删了重新创建,从结果上来看除了 commit 记录以外,其他的东西完全没有变化
hi909 小成 2025-6-22 20:14:58
用 gitup ,可以在界面上操作:squsah with parent
1103409364 初学 2025-6-22 20:16:04
@1103409364 看漏了,
ixcode 初学 2025-6-22 20:29:09
squash
SoloCompany 小成 2025-6-22 20:29:48
你先学习一下 git filter-branch 命令吧
BeautifulSoap 小成 2025-6-22 20:40:35
下面的方法可行,假设你想动的分支是 master ,先在当前分支上创建一个新分支 master2 1. 先 checkout master ,然后执行 git reset --hard c200 把 master 给 reset 到 c200 2. 然后执行 git rebase -i --root ,在交互模式里将除了初始的第一个 commit 之外的 commit 都选择 squash ,初始 commit 可以选择 pick 或 reword 。结束出你的 master 分支就只有 1 个提交,它压缩了 c200 的提交。记下现在新的 master 的提交 id 为 master-new-commit-it 3. checkout master2 分支,然后执行 git rebase -i master-new-commit-it 。在交互里把 c200 即之前的所有 commit 全 drop ,剩下 commit 全保留默认的 pick 。然后就结束了 第三步可能会有少许的冲突,但基本上没多少问题
memorycancel 小成 2025-6-22 20:55:11
![https://stackoverflow.com/questions/598672/squash-the-first-two-commits-in-git]( https://stackoverflow.com/questions/598672/squash-the-first-two-commits-in-git)
返回顶部