2012-03-05 59 views
1

我发现了一些类似的问题和答案,但这些只关心本地提交(有时候答案是分享更改后不这样做)。如何放弃已经推送到远程的更改?

我有以下几点:

A-B-C-D-E (HEAD) 
     ↑ 
     master = origin/master 

我想是这样的:

someBranch 
     ↓ 
    C-D-E (HEAD) 
/
A-B-F 
    ↑ 
master = origin/master 

其中F可以是犯说,主已复位那里。基本上我想撤消在C,D和E的变化,但我不在乎重置是在库中可见。

如果这是不可能的我最接近的选择是什么?

编辑:要明确:我不是唯一一个在项目上工作的人。

回答

0

您可以简单地在所有这些提交上执行git revert,然后向上推。它将恢复所有这些提交。

+0

git revert是生成一个新的提交,恢复更改 – linquize 2012-03-06 01:21:51

+0

海报说,他不重要,如果重置是在历史中可见,所以我认为这也是一种有效的方法。 – gtr32x 2012-03-06 03:10:08

1

一个非常残酷的解决办法是

git branch someBranch 
git reset --hard HEAD~3 
git push --force 

,如果你知道没有其他人已经退出分支,因为你推到,例如,这可能是可以接受的如果你是唯一一个在这个项目上工作的人。否则,你可能会遇到问题。

+0

确保它没有设置到远程仓库:git config receive.denyNonFastForwards true – linquize 2012-03-06 01:27:46

+0

我的问题是我不是唯一的。 – subsub 2012-03-06 09:06:42

+0

@devconsole需要在重置和推送之间进行提交才能生成F – ralphtheninja 2012-03-06 12:16:40