2014-02-28 135 views
-2

我做這樣的事情:刪除GIT中一個文件提交

1. git add . 
2.git commit 

從而commiting 200MB的視頻文件,然後我試圖通過刪除視頻文件並重復步驟1和2,以除去,但沒有任何幫助的話,我試着用搜索引擎從而結束了與運行這三個命令

1.git add -u 
2.git reset HEAD path/to/file 
3.git commit 

因此,我要在3日提交,仍無法推我的視頻文件仍然在某處提交..我該怎麼辦擺脫這個混亂!

+1

讓我解釋一下爲什麼我認爲這是一個重複的:如果你已經**犯**的大視頻,他在當地的「工作」信息庫,那麼你的回購會記住它,即使它是遲來刪除。那是因爲'歷史'會保留它,所以你總是可以回覆。這是版本的問題,並承諾。自(非壓扁)的一個承諾包含大文件的blob,你會被推出的是200MB,只是爲了immediatelly標記爲刪除(因爲它們是獨立的變化!) 。所以,我認爲除了'.gitignore'這個文件之外,他還必須完全從歷史中刪除它。 – quetzalcoatl

回答

2

添加具有刪除不利於視頻文件的新提交,因爲大文件將保留回購的一部分。 相反:

git reset <commit> 

哪裏commit是添加視頻文件前的一個。然後

echo <video-file-name> >> .gitignore 
git add . 
git commit 

.gitignore文件包含git完全忽略的文件列表。

+0

嗯..會跳出巨大提交真正防止其推期間發送?我不知道這一點:/肯定的是,在「錯誤的承諾」依然會在當地的回購和大文件會依然堅守在​​歷史。如我在評論中鏈接的問題所示,真正刪除文件/提交可能是合理的。 – quetzalcoatl

+1

復位大視頻blob和後指犯下仍然會在回購,但他們將是無形的,因爲沒有裁判指向他們。他們也不會被推。隨後的'git gc'會完全刪除它們。 – SzG