2011-10-21 65 views
27

如何放棄git本地分支的變化? 例如,本地分支版本:A-> B-> C 現在我處於A版本,並且它與最新版本C有一些衝突。 我想丟棄本地更改並且拉取最新版本C.如何丟棄git本地分支的變化?

$ git pull 

我會遇到一些錯誤。並且有很多文件,所以我不需要做很多次$ git co files

有什麼更好的辦法嗎?

回答

54

如果您有要放棄未提交的修改,使用:

$ git reset --hard 

這相當於

$ git reset --hard HEAD 

這將刪除所有本地提交的更改。如果您想從本地分支中刪除一些違規提交,請嘗試將其倒轉:

$ git reset --hard HEAD^ #moves HEAD back by one commit 

$ git reset --hard HEAD~3 #moves HEAD back by 3 commits 

請謹慎使用,因爲您將無法撤消這些操作。清理完本地分行後,請使用git pull獲取最新的代碼。

+0

如果您已經推你的分支,你需要小心 - 硬,因爲它可以搞砸歷史復位的遠程服務器。 –

+0

這不會刪除未提交的文件。您將不得不手動刪除這些文件。 –

0

您是否已經提交了本地更改? 如果沒有一個git的復位 - 硬頭應該做的伎倆

+0

您也可以撤銷本地提交的更改,請參閱ayoy的解決方案。 – jli

19
git fetch 
git reset --hard origin/master 
+0

'git reset --hard origin/master'正是我一直在尋找的! – mystarrocks

+0

這是假設你已經在某個時間登記到遠程,這同樣適用於本地回購?我可以做'git reset --hard otherLocalBranch'來達到同樣的效果嗎? –

+0

這正是我想要放棄我從另一個分支錯誤地提交的提交。謝謝@Onlyjob –