2013-05-29 179 views
2

我已經對我的項目的git管理一些錯誤的服務器上:git的刪除提交

閱讀一些導遊和一些職位在這裏我做了這個命令:

git reset --hard a77ec5f 

其中commint a77ec5f是最後一個「好」的承諾後,該

,該文件是對我的本地副本,但如果我做了git status

$ git status 
# On branch dev 
# Your branch is behind 'origin/dev' by 4 commits, and can be fast-forwarded. 
# 
nothing to commit (working directory clean) 

現在,我怎麼能告訴服務器,我落後的4提交是要刪除? 感謝

回答

3

如果你的庫是由他人同步,那麼你不應該,除非你確信沒有人拉壞的變化還沒有將任何歷史變動。

要重寫歷史記錄(危險),請在本地執行一個空提交(git commit --allow-empty)以將頭從遠程HEAD發散,然後push --force重寫服務器的歷史記錄。

+0

更改在服務器中......我如何執行虛擬提交? – ghiboz

+0

添加了簡短說明。 – nneonneo

+0

感謝@nneonneo,推動它的工作! – ghiboz

1

你不應該在服務器上刪除了提交,但恢復他們

+0

謝謝,並在我的地步,我怎麼能'跳'這4個提交? – ghiboz

+2

@ marian-theisen:你能告訴我該怎麼做嗎? – SiddharthaRT

1

您可以恢復不需要的提交。

git revert commit 

這將創建另一個提交來恢復不需要的更改。在你恢復不需要的提交之後,你應該推到原點。

您也可以查找--no-commit參數進行恢復。