【问题标题】:git, squashing commits on the flygit,即时压缩提交
【发布时间】:2012-11-20 01:46:57
【问题描述】:

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

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

我可以通过git rebase -i HEAD~5来完成

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

有什么想法吗?

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

【问题讨论】:

    标签: git rebase squash


    【解决方案1】:

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

    1. git branch new-branch master

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

      git reset --hard HEAD~5

    3. git merge --squash master new-branch

    4. git push

    您最终将在 masterorigin/master 上获得 squashed 提交,在 new-branch 上提交 5 次。

    【讨论】:

    • 是的。这是一个不错的选择。但我发布的问题并不完全描述我的情况:)。我有 5 个提交,需要将它们推送到新的(空)远程仓库/所以我没有标签,它存在于我的本地和我的远程仓库中......因此我询问了“即时”压缩。 ..
    【解决方案2】:

    Titasanswer 略有不同,无需触及您的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),
    • 添加所有内容并进行一次提交,
    • 添加您的遥控器(到您的远程仓库),
    • 并推送新本地存储库的一次提交。

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 2021-04-30
      • 1970-01-01
      • 2011-01-19
      • 2017-10-16
      • 2012-12-18
      • 2016-05-22
      • 2018-07-20
      • 2018-11-05
      相关资源
      最近更新 更多