如何摆脱特定的提交(在被推送到github之后)

时间:2013-05-30 20:44:35

标签: git github git-push git-commit

目前,在我的某个分支机构中,我有两个提交commit oldcommit latestcommit latest之后完成了commit old。现在,我想只将commit latest合并到主服务器上。我不希望commit old做任何更改。如何从github中删除特定的选定提交?在阅读其他答案后,我发现我不能直接从github做。我需要先恢复本地分支上的更改,然后再次推送?令我困惑的是,我怎样才能恢复特定提交的更改并仍然保留我最新提交的更改,如果我这样做,我需要做什么呢?

我真的很感激任何帮助或链接。我是git / github的新手。

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式推送commit latest(假设commit latest的主本地分支,并且基于origin / master):

git checkout -b tmpbranch HEAD~2
git cherry-pick master
git push origin tmpbranch:master

git的最佳功能之一是在最终推送之前有很多方法可以修改本地历史记录。我刚刚列出的只是一种方式。

答案 1 :(得分:0)

在git中,如果你有一个提交 - 它的整个历史就是它的一部分。因此,您无法合并单个提交,因为这意味着您也会合并其整个历史记录。

如果您不想在过去更改单个提交,那么诀窍是在最新提交之上添加另一个提交,即撤消任何不需要的提交。 - 可以使用git revert完成此操作。

还有git rebase非常强大。但是在你完全理解git是如何工作之前请不要使用它。 - 否则你很容易破坏事情。