我有一个本地的git仓库和一个远程仓库。自从上一次从远程仓库拉取以来,我在本地仓库中进行了5次提交。
现在我需要推送到远程仓库,并且我需要合并我的最后5个提交。
我可以通过git rebase -i HEAD~5
来实现。
但这不是最好的方法。我不想改变本地仓库中的任何内容。我希望只将一个合并后的提交推送到远程仓库,并在本地仓库中保留5个未更改的提交。
有什么建议吗?
更新: 如果我有一个包含5个提交的本地仓库,需要创建一个新的远程仓库与他人共享我的代码。如何为这个新的仓库合并提交?
git branch new-branch master
2. 进行您的提交。完成后,将主分支 head 重置为最近的五次提交:git reset --hard HEAD~5
3. 将新分支合并到主分支,并使用“--squash”参数来压缩提交:git merge --squash master new-branch
4. 推送更改到服务器:git push
现在您会在主分支和远程主分支上看到一个被压缩的提交,而在新分支上保留了五个提交。与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
但这将在您的新存储库上推送主分支的完整历史记录,包括+1(压缩)提交。
如果您想要一个全新的历史记录,并将您的存储库作为5个新提交之后的状态,那么更容易的方法是:
.git
文件夹,git init
(即从所有现有文件重新创建一个新的本地git存储库),