我有一个本地 git 仓库,一个远程仓库。自从上次从远程拉取以来,我对本地仓库进行了 5 次提交。
现在我需要推送到远程。我需要压缩我最后的 5 次提交。
我可以做到git rebase -i HEAD~5
但这并不好。我不想更改本地存储库中的任何内容。我想将一个压缩的提交推送到远程,并在我的本地存储库中保留 5 个未更改的提交。
有任何想法吗?
UPD:如果我有 5 次提交的本地仓库怎么办。我需要创建新的远程仓库来与其他人分享我的代码。如何压缩这个新仓库的提交?
如果你只是想保留你的五个提交以供参考,也许你应该和他们一起在一个分支中工作。
git branch new-branch master
做你的承诺。既然你已经这样做了,只需重置主人的头:
git reset --hard HEAD~5
git merge --squash master new-branch
git push
你最终会得到 squashed commit onmaster
和origin/master
5 commits on new-branch
。
与Titas的回答略有不同,无需触及您的master
分支,并挤压一个新分支(您将推送到您的新仓库)
git remote add newrepo url://of/your/new/repo
git checkout -b newbranch master
git merge --squash master
git push -u newrepo newbranch:master
但这会在你的新仓库中推送 master 的完整历史,+1(压缩)提交。
如果你想要一个新的分支历史,你的 repo 在 5 次新提交之后,更容易:
.git
本地克隆中的,git init.
(即,从所有现有文件重新创建一个新的本地 git repo),