2013-01-10 74 views
30

我正在自己的git存儲庫上工作(所以是的,我知道這樣做的含義和警告),並且在某種程度上,其中一棵樹在被推它不應該有。解決合併衝突:強制覆蓋所有文件

現在我試圖撤回,它抱怨數百個合併衝突。

有沒有辦法將git強制告知覆蓋來自遠程服務器本地的任何和所有文件?有沒有比做git reset --hard HEAD~1更快的方法,然後做拉?

在這個相同的說明,有沒有辦法做到這一點與簡單的合併?我見過的所有東西都建議在合併衝突解決階段查看每個文件,但有數百個文件是無法手動完成的。

+1

爲什麼不只是吹走你的沙箱,並再次克隆它呢? – gview

+0

我希望有些事情沒有花費太多時間。該項目規模龐大,需要花費大量時間進行克隆。 – Qix

回答

53

有三個簡單的解決方案複製的最後一個版本是在你遠程倉庫,丟棄你在本地的所有更改:

  1. 丟棄你的資料庫,並重新克隆。這是最簡單的解決方案,但如果你的倉庫大,可能需要很長的時間,並可能需要額外的努力就像重新configure ING等與git reset --hard <hash>

  2. 放棄本地更改,然後做一個git pull。問題是你需要首先在你試圖避免的變化歷史之前找到一個提交。重置爲該提交散列後,執行git pull

  3. 做一個git fetch帶來更新到遠程分支(通常是起源/碩士)的您當地的參考,然後做一個git reset --hard通過這個基準,即git reset --hard origin/master

+4

#3非常聰明。好答案。順便說一下,歡迎來到StackOverflow。只需要注意一點:使用反引號(')來表示代碼或命令行內容。 – Qix

+3

'git checkout - 他們.'似乎工作,如果合併不包括任何刪除 –

0
git reset --hard {remote_repository_name}/{branch_name} 

例子:

git reset --hard upstream/branch1 

如果您正在使用一個分支工作,你可以用上面的code.But在這之前,你必須(或上游源)設置爲本地資源庫,

git remote add upstream https://github.com/lakini/example.git 

這裏,https://github.com/lakini/example.git是遠程上游存儲庫。

和我們一樣,我們也可以在遠程倉庫(原產地)工作。

git reset --hard origin/branch1 
+0

這幾乎正是其他答案說... – Qix