threads / discuss / 27553

500Mb file erroneously commited

Subject: 500Mb file erroneously commited

## tl;dr

4 messages between Jun 6, 2011 and Jun 6, 2011.

replies: 3people: 4as markdown or json

Bartolomeo Nicolotti· Jun 6, 2011, 07:43 UTC · lore
Hello,

we're using CVS to store some sources, but for some big projects I'm considering to use git. Last week it has happened that one collegue erroneously commited one big file, 500Mb the file only. To avoid to have this file in the repository we've deleted the history file in the CVS repository, the one with ,v, this has been easy as each file has its own history. Would it be possible to do the same with git, or there's no possibility to delete a 500Mb file erroneously commited?

Many thanks
Best regards
Bartolomeo
Michael J Gruber· Jun 6, 2011, 07:51 UTC · re: Bartolomeo Nicolotti · lore

Re: 500Mb file erroneously commited

Bartolomeo Nicolotti venit, vidit, dixit 06.06.2011 09:43:
Show 8 quoted lines
> Hello,
> 
> we're using CVS to store some sources, but for some big projects I'm considering
> to use git. Last week it has happened that one collegue erroneously commited one
> big file, 500Mb the file only. To avoid to have this file in the repository
> we've deleted the history file in the CVS repository, the one with ,v, this has
> been easy as each file has its own history. Would it be possible to do the same
> with git, or there's no possibility to delete a 500Mb file erroneously commited? 

Due to the way git (or hg or...) works, you would have to rewrite the history in order to remove a file from a repo completely. The first example in the git-filter-branch man page describes how to do this.

Michael
Axel Freyn· Jun 6, 2011, 07:55 UTC · re: Bartolomeo Nicolotti · lore

Re: 500Mb file erroneously commited

On Mon, Jun 06, 2011 at 07:43:20AM +0000, Bartolomeo Nicolotti wrote:
Show 8 quoted lines
> Hello,
> 
> we're using CVS to store some sources, but for some big projects I'm considering
> to use git. Last week it has happened that one collegue erroneously commited one
> big file, 500Mb the file only. To avoid to have this file in the repository
> we've deleted the history file in the CVS repository, the one with ,v, this has
> been easy as each file has its own history. Would it be possible to do the same
> with git, or there's no possibility to delete a 500Mb file erroneously commited? 
Hi,
yes, you can. In fact, there are at least two situation:
 - if you detect the error DIRECTLY after the commit (and have no other
   commits on top of it), then a
   git rm bigfile
   git commit --amend
   does the trick (well, the big file will be unused now, and be deleted
   by the next "git gc")
 - if you have already other commit's on top of it, you can use e.g.
   "git rebase" in order to redefine the history... something like (I'm
   not sure it works exactly like that, but in principle)
   git checkout -b tmp <WRONG_COMMIT>
   git rm bigfile
   git commit --amend
   git checkout master
   git rebase tmpfix
   git branch -d tmpfix
   
However, there if your tree has been already shared with other
developers, they also will have to change to the new and corrected
branch.
Axel
Matthieu Moy· Jun 6, 2011, 09:10 UTC · re: Axel Freyn · lore

Re: 500Mb file erroneously commited

Axel Freyn <axel-freyn@gmx.de> writes:
Show 9 quoted lines
>  - if you have already other commit's on top of it, you can use e.g.
>    "git rebase" in order to redefine the history... something like (I'm
>    not sure it works exactly like that, but in principle)
>    git checkout -b tmp <WRONG_COMMIT>
>    git rm bigfile
>    git commit --amend
>    git checkout master
>    git rebase tmpfix
>    git branch -d tmpfix

That should work, but "git rebase -i" will make it much simpler (just "edit" or even delete the guilty commit).

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

← back to recent threads