2017-08-20 31 views
1

我使用C++的Visual Studio,我已經分叉回購和在建設過程中,git跟蹤這個駐留在src/.vs/v15中的101MB大文件/ ipchC++ ipch visual studio跟蹤在git.Cannot推動由於大尺寸

現在問題是我無法將任何更改推送到原點,因爲GitHub的大小限制爲100MB。

我在此之後承諾了4-5次更改,並且無法將其中一個推到原點。

以下是錯誤我在bash獲得:

遠程:錯誤:GH001:

remote: error :GH001

我試着這樣做:

git --rm cached <file> 

這從索引中刪除我的文件但我仍然必須推動這些變化。

我該如何處理這個問題?

+2

你應該把整個'.vs'目錄在'.gitignore'文件,你永遠不希望無論如何,每次都會生成它。如果您不需要進行個別更改,請複製您在其他地方更改過的文件,刪除並重新登錄回購站,然後在您擁有正確的.gitignore文件設置並提交併推送它們後將文件放回。 https://github.com/github/gitignore/blob/master/VisualStudio.gitignore –

+0

謝謝@RetiredNinja。當我改變它時,是否有辦法讓n提交併撤銷.vs代碼的跟蹤?有點像rebase什麼的? 我真的不希望刪除回購,因爲我花了很多時間來設置配置文件 –

+0

@Nexus https://stackoverflow.com/search?q=%5Bgit%5D+remove+directory+from+history – phd

回答

1

當我改變它時,有沒有辦法讓n提交併撤銷.vs代碼的跟蹤?

您可以嘗試BFG Repo-Cleaner以清除您的本地大型文件的回購,但它僅適用於裸回購。

對於您當前的本地(非裸)回購,您可以按照「Removing sensitive data from a repository」並從您所有過去的提交中移除該特定文件。

git filter-branch --force --index-filter \ 
    'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \ 
    --prune-empty --tag-name-filter cat -- --all 

但實際上,你應該刪除.VS文件夾本身:詳見 「Remove folder and its contents from git/GitHub's history

git filter-branch --tree-filter 'rm -rf src/.vs' --prune-empty HEAD 
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d 
echo .vs/ >> .gitignore 
git add .gitignore 
git commit -m 'Removing src/.vs from git history' 
git gc 
git push origin master --force