Git:删除重复的提交

时间:2014-06-18 07:02:00

标签: git git-branch

我不知道如何,但我有以下日志:

* 527795c - (HEAD, origin/master, master)
*   b829011 - Merge branch 'master'
|\  
| * 423e3aa - Some files added
| * b4c60f2 - Initial commit
* a838a27 - Initial commit

提交a838a27b4c60f2是相同的(所有修改完全相同)。

如何删除提交a838a27

由于

2 个答案:

答案 0 :(得分:3)

如果这些提交相同,那么b829011 - Merge branch 'master'根本不是很有用。

您的历史记录可能只有b4c60f2423e3aa527795c

一个简单的解决方案是:

  • 重命名master
  • 中的当前master old分支
  • master
  • 创建423e3aa分支
  • cherry-pick 527795c
  • 删除master-old
  • 强制将新master推送到原点(注意:它会更改原点的历史记录,因此请务必警告已克隆上游仓库的任何用户进行更改)

那是:

git branch -m master master_old
git checkout -b master 423e3aa
git cherry-pick 527795c
git branch -d master_old
git push --force -u origin master

在强制推送之前确保历史记录正确

答案 1 :(得分:0)

如果您在此合并与527795c(或其他任何人)之间有更多提交而不仅仅是HEAD,那么要补充VonC的答案(会发表评论,不允许......)会找到的 git rebase 节省你每一个人的樱桃。

出现这种情况的一种方法是:git checkout --orphan new_branch