Git Squash将origin / master中的所有提交提交到origin / master中的单个提交

时间:2016-11-08 09:52:11

标签: git github version-control

我正在使用我的git存储库,并在之前的master分支上进行了大量的提交。现在我意识到它有点太吵了,并且想将所有这些合并到一个提交中。

102381 commit z
....
176232 commit a
891273 initial commit

简单地

198273 initial commit (after rebase)
891273 initial commit

我环顾四周,许多解决方案似乎都在挤压。不幸的是,鉴于一切都在主分支上,这可能是可能的。

我最初的想法之一是

  1. 从commit#891273
  2. 创建一个新分支
  3. 将所有东西从主人压缩到新分支
  4. 删除旧主服务器,并将其替换为此新分支
  5. 我不确定这是否是一个很好的方法;认为获得一些想法,指导和讨论会更明智。

2 个答案:

答案 0 :(得分:4)

您可以简单地对891273进行软重置,然后进行提交。 这会将分支重置为第一次提交,保持暂存区域中的更改重置,您可以在下一步中提交。

git reset --soft 891273 
git commit -m 'Second Commit'

这样,您的存储库中将有两个提交。

答案 1 :(得分:1)

找到一种简单的方法来实现您的要求:

  1. git checkout –b branch1。从commit#891273,

  2. 创建一个新分支
  3. git rebase –i master

  4. 等待编辑器输入(键入i以开始输入):

    pick 176232 commit a

    squash ****** commit b

    ......

    squash 102381 commit z

  5. 注意:输入“Esc”按钮停止输入

    1. 输入:wq退出编辑器,然后你会找到你想要的东西
    2. 注意:当压缩提交到z时,它可能会发生冲突。你需要修复冲突的文件,并使用git add filename,git rebase --continue继续压缩

      参考: https://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit