5

我有一个本地 git 仓库,一个远程仓库。自从上次从远程拉取以来,我对本地仓库进行了 5 次提交。

现在我需要推送到远程。我需要压缩我最后的 5 次提交。

我可以做到git rebase -i HEAD~5

但这并不好。我不想更改本地存储库中的任何内容。我想将一个压缩的提交推送到远程,并在我的本地存储库中保留 5 个未更改的提交。

有任何想法吗?

UPD:如果我有 5 次提交的本地仓库怎么办。我需要创建新的远程仓库来与其他人分享我的代码。如何压缩这个新仓库的提交?

4

2 回答 2

5

如果你只是想保留你的五个提交以供参考,也许你应该和他们一起在一个分支中工作。

  1. git branch new-branch master

  2. 做你的承诺。既然你已经这样做了,只需重置主人的头:

    git reset --hard HEAD~5

  3. git merge --squash master new-branch

  4. git push

你最终会得到 squashed commit onmasterorigin/master5 commits on new-branch

于 2012-12-02T11:51:16.080 回答
1

与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),
  • 添加所有内容并进行一次提交,
  • 添加你的遥控器(到你的远程仓库),
  • 并推送您的新本地存储库的一次提交。
于 2012-12-02T12:33:38.413 回答