2014-02-28 43 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