回答
我認爲你可以在本地回滾和推動的結果:
$ git reset HEAD^ --hard
$ git push REMOTE -f
如果「遠程」是遠程名稱。
既然你已經推到提交遠程倉庫,最好的辦法可能是恢復的兩次提交,這樣你就不會創建誰已經從遠程倉庫拉任何人的任何問題。
示例使用以下提交歷史:
e512d38 Adding taunts to management.
bd89039 Adding kill switch in case I'm fired.
da8af4d Adding performance optimizations to master loop.
db0c012 Fixing bug in the doohickey
如果你只是想恢復的提交,而無需修改歷史,你可以做到以下幾點:
git revert e512d38
git revert bd89039
或者,如果你不」如果希望其他人看到您添加了kill開關然後將其刪除,則可以使用以下方式回滾存儲庫(但是,這會給已經從遠程執行您的更改的其他人帶來問題):
git reset --hard da8af4d
git push origin -f localBranch:remoteBranch
其中localBranch
是當地分支機構的名稱,remoteBranch
的遠程分支的名字。
「爲管理添加嘲諷」引發了舊的(新的)諺語:「不要喝酒和推動」。 :-) – torek 2012-03-16 03:45:30
@torek我可以說什麼,我既是一個承諾的飲酒者,也是一個飲酒提交者。 – 2012-03-16 04:19:09
首先輸入這個命令。
git log -n 4
該命令將顯示您的最後4個提交與他們的SHA。在這之後輸入以下命令。
git rebase -i SHA_ID
而不是SHA_ID鍵入您要刪除的提交之前的提交的SHA。
這個文件將打開後,在該文件的頂部,你會看到SHA和要刪除提交的消息。刪除此行並保存並退出文件。
當你這樣做,你必須加把勁。所以輸入以下命令。
git push -f origin master
完成此操作後,您可以看到您的提交已被刪除。
- 1. 刪除已被推動但失敗的Git提交
- 2. 刪除使用Git提交
- 3. 如何從git中的已推送分支中刪除所有提交?
- 4. 如何清理git歷史記錄刪除某些提交後被推送?
- 5. 如何從推Git提交中刪除文件
- 6. 提交後使用Git恢復已刪除的文件夾
- 7. 我如何只提交Git刪除?
- 8. 如何刪除Git中的舊提交?
- 9. Git刪除根提交
- 10. git revert刪除提交
- 11. 使用Git,我該如何一次性提交已刪除文件的負載?
- 12. git rebase interactive已經推送提交
- 13. git防止推送,因爲太大,已被刪除的文件
- 14. 如何知道git子模塊提交是否已被推入存儲庫
- 15. git非交互式地刪除提交
- 16. 如何恢復未被刪除的文件(用普通rm刪除)到最後的git提交
- 17. 我已經推入Git後如何合併提交?
- 18. 當類已被刪除時啓用表單提交按鈕
- 19. Git在提交後仍然顯示已刪除的文件
- 20. git恢復到多個提交之前已經推動
- 21. 如何獲取代碼到先前在GIT中提交的已被推送到服務器的代碼
- 22. 獲得之前在git存儲庫上被刪除的提交
- 23. git - 恢復在結帳時被刪除的提交
- 24. Git:從提交請求中排除已提交的文件
- 25. 如何刪除提交
- 26. 從git中刪除大型提交
- 27. 刪除所有Git提交記錄
- 28. 刪除git遠程分支提交
- 29. GIT拉刪除了我的提交
- 30. git的變基刪除提交
你可以* *做到這一點,但它是不可取的,因爲誰比誰在此期間抓起提交將得到......嗯,以避免不好的話,比方說,「他們將不得不努力工作,從自己的行爲中恢復「。 :-)最好使用「git revert」來添加一個新的提交來撤消之前的提交。 (認爲「恢復」爲「添加一個提交的補丁是完全撤消前一次提交的動作」,因爲這就是它的原因。) – torek 2012-03-16 03:20:48
@torek我一開始就想到這個,但我認爲shadowfax可能有其他目的,比如讓每個遠程提交都能夠正確運行,否則他會想到「還原和推送」。 – peter 2012-03-16 03:30:28
我想你可能會對有多少人不理解'git revert'感到驚訝。另一方面,可能會有完全不同的動機(如David M. Syzdek的回答)。在某些情況下,沒有好的解決方案,只有最差的解決方案(根據情況而有所不同)。 – torek 2012-03-16 03:44:03