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

相關問題