2010-04-08 63 views
4

我意外地將我的development.sqlite3文件提交給Git,它似乎在放慢我的提交。我知道.gitignore,但是一旦我這樣做了,它會將文件從我的存儲庫中取出嗎?我擔心的是減少提交和推送時間。意外承諾開發數據庫Git

+2

我相信你正在尋找http://stackoverflow.com/questions/1143796/git-remove-a-file-from-the- repository-without-deleted-it-from-the-local-filesys 您需要將其添加到.gitignore中,但是也要將其從存儲庫中刪除。 – bobDevil 2010-04-08 21:45:47

+1

http://stackoverflow.com/questions/307828/ git-remove-file-unexpectedly-added-the-repository – rjh 2010-04-08 21:50:39

+0

quickfix:備份該文件,創建新的原始名稱,將備份文件添加到.gitignore並提交,比從.gitignore刪除備份文件,並在那裏添加數據庫文件,最後恢復備份:) – 2010-04-08 21:53:42

回答

-1

不。所有.gitignore文件都會告訴各種Git用戶界面工具在批量提交更改時忽略該文件。你仍然可以手動將你想要的任何單個文件放入Git的數據庫中,並且添加entires不會從Git修訂版數據庫中刪除任何內容。

+0

你還沒有真正回答真正的問題,這是如何擺脫文件。 – Cascabel 2010-04-08 22:01:24

1

試試這個:

git filter-branch --tree-filter ´rm filename´ HEAD 
+1

'filter-branch'絕對是絕對的矯枉過正。有問題的文件僅在一次提交中添加,並且自此以後未被修改。 – Cascabel 2010-04-08 22:08:50

6

沒有必要與過濾分支花式 - 這僅僅是一個近期提交。如果沒有,只需刪除文件(git rm --cached <filename>)並修改您的提交(git commit --amend)。 --cached選項告訴git只刪除索引中的副本(commit staging區域),並保持工作樹中的版本不變。

如果它在歷史的更遠處,可以使用交互式重新分區(git rebase -i <commit before the bad one> master),選擇edit壞的提交,並像以前一樣修改rm /。當然,一定要將它添加到你的gitignore中。

請注意,如果您已經推送了此提交,則必須使用push -f才能獲得非快進推送,並且如果其他人已經推送了它們,它們將會被惹惱(請參閱「git-rebase」手冊頁中的「從上游rebase恢復」部分。

+0

我很好奇爲什麼這個答案是downvoted - 任何人都在意告訴我如何可以改進? – Cascabel 2010-04-09 13:54:43