我如何进行git替换而不是合并

时间:2015-01-20 18:18:21

标签: git git-revert

我正在尝试以简单的方式执行此操作并减少编码。我在git中有以下提交

A->B->C->D

我想基本上删除提交C并继续提交D - 我正在努力找到一种方式

我试过

git checkout -b myfix B
git cherry-pick D
git checkout master
git merge myfix

但是当然,自从我合并后,提交C仍然存在。

有没有办法说用myfix分支替换master?

甚至是另一种获取方法

A->B->D->[new commit]

2 个答案:

答案 0 :(得分:3)

Interactive Rebase

$ git rebase -i HEAD~5

其中-i是交互式标志,HEAD~5表示包含交互式rebase中的最后5次提交。

然后会显示一个提示,删除引用您想要删除的提交的行,保存并关闭。

同时

如果您只想返回本地评论,请使用git revert

答案 1 :(得分:1)

git revert是一个非常简单的工具,可以完全达到你想要的效果。 This writeup is a nice explanation on how it works and how to use it,但这仅仅是使用问题:

git revert <commit>

<commit>是提交ID,或者仅在您的情况下HEAD~1。结果命令是:

git revert HEAD~1

然后只需git push您的更改就可以了。