2011-08-20 41 views
1

請幫助我是Git的新手 - 在我的應用程序中出現嚴重錯誤,我想恢復以前的提交 - 但沒有任何工作 - 無論我做什麼,我仍然可以看到本地硬盤上的更新文件。我怎樣才能恢復到以前的提交,並確保這是我必須在我的本地機器上使用?Git撤消 - 確保本地文件與之前提交的Git相同

+0

'git status'輸出是什麼? – greg0ire

回答

1

重新回到上次提交:

$ git reset --hard HEAD 

請注意,所有未提交的更改將被丟棄。這會將所有文件恢復到上次提交狀態。 HEAD也可以編輯以匹配提交的sha1哈希以恢復到特定的提交。

有關復位的詳細信息,請閱讀本:http://progit.org/2011/07/11/reset.html

+0

感謝您的快速回復和幫助 - 我已經做到了這一點,但似乎我的本地文件沒有更新?我也刪除了之前的提交(不知道我是如何做到這一點的 - 我已經繞圈了好幾個小時),但是我已經在git hub上返回了大約3次提交 - 這是我想要的 - 但它沒有反映在我的本地文件中 - 我一直在使用類似pull的命令 - 但似乎沒有任何效果 –

+0

git status說了什麼?任何改變都可以通過'git checkout - .'恢復,以確保文件列表鏡像最後一次提交。 – Luwe

+0

Luwe - 我終於找到了工作 - 這是一個非常棒的鏈接 - 最後我想我已經開始掌握Git正在嘗試做的事情 - 這只是一個謎 - 並且沒有文檔將其解釋爲簡單的鏈接提供 - 非常感謝。 –

2

如果你還沒有推,儘量git reset --hard HEAD

否則git revert HEAD將創建一個與您在最近一次提交時所做的完全相反的提交。

您還可以指定提交哈希而不是HEAD來撤消特定的提交。

0

第一件事情是,您可以臨時應用git stash進行本地更改。您可以使用git stash apply返回這些更改。

如果問題不在您的本地更改中,您可以檢查使用git checkout <commit-id>的舊版本,其中commit-id是提交的哈希,分支名稱或像HEAD ^這樣的特殊引用。之後您將使用detached head,這意味着如果您希望對已簽出的版本進行任何代碼更改,則必須從此版本創建一個新分支(git checkout -b <new-branchname>)。