2016-11-08 111 views
1

我正在玩弄我的git存储库,并在之前向master分支提交了相当数量的提交。现在我意识到它有点太吵,并希望将所有这些合并成一个提交。Git将所有提交的原始/主文件提交到原始/主文件中的单个提交

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

简单

198273 initial commit (after rebase) 
891273 initial commit 

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

我的一个初步想法是

  1. 创建一个新的分支从提交#891273
  2. 壁球一切从主到新的分支
  3. 删除旧主人,这一新的替换分支

我不确定这是否是一种很好的方法;认为获得一些想法,指导和讨论会更明智。

回答

1

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

  1. git checkout –b branch1。创建一个新的分支从提交#891273,

  2. git rebase –i master

  3. 等待编辑器来输入(类型i开始输入):

    pick 176232 commit a

    squash ****** commit b

    ......

    squash 102381 commit z

注:输入 'Esc键' 按钮停止输入

  • 输入:wq退出编辑器,然后你会发现你想要的
  • 注意:当压缩提交到z时,它可能有冲突。您需要解决冲突的文件,并使用git添加文件名,git的变基--continue继续挤压

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

    2

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

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

    这样你就会在你的仓库中有两个提交。

    相关问题