2015-04-28 16 views
3

例如我想破解angularjs的代碼,所以我簡單地使用git clone https://github.com/angular/angular.git克隆它,以模擬更新場景,我將使用git reset --hard HEAD~10來放棄最近的提交,git pull在重置後大大地工作,因爲它可以從更新遠程回購容易,但與過濾分支,GIT拉是痛苦的,我的問題是如何處理這種痛苦。如何在本地回購時使用filter-branch時從遠程回購中獲取更新?

因爲我只能對自己的回購進行破解,有時候一些原始回購可能有一些我不想要的目錄,例如某些項目可能在回購中有node_modules,這裏我將腳本文件夾作爲例如,我應該刪除在我的本地回購過濾分支,但在git filter-branch --tree-filter "rm scripts -rf",它是錯誤的從原始回購更新,

過濾分支後git拉,它是錯誤的,並且難以管理衝突。

因此如何處理那些沒有得到很好的管理,我必須使用過濾器分支刪除操作的回購協議,問題是如何得到過濾領域術後更新,有沒有一個很好的解決這個員工?

回答

3

當您使用filter-branch時,您將更改分支中每個提交的提交哈希。這應該是最後的手段,而不是定期達到的目標。

而是簡單地從使用的東西你的資料庫中刪除目錄一樣

git rm -r scripts 

,然後提交。這將創建一個新的提交,刪除腳本目錄,同時保留之前的提交,因爲它們已經存在。

在共享提交中應該強烈避免「更改」提交的操作,包括filter-branch。這些操作會導致各種複雜情況,其中一些現在正在發現。

+0

但如果在原來的回購一些垃圾,如二進制exe文件,密碼文件,我認爲這是更好使用過濾器分支刪除它,但我不能拉更新了:( – hugemeow

+0

@hugemeow,所有的一切在Git的依賴如果你改變本地提交的哈希值,那麼'git pull'不能找出合併修改的方法,就Git而言,你的本地副本和遠程副本沒有共同的歷史記錄。如果可能,保持提交散列。 – Chris