我提交了一些文件并试图将它们推送到远程存储库。 但是,我在列表中找到了一个大型视频文件并终止了推送。 然后我尝试从列表中删除该文件并再次推送。
$git commit -m "comments" -a
$git push origin my_branch
... # I found mp4 file here and terminated push
$git rm --cached path/to/mp4
$git commit -m "comments" -a
$git push origin my_branch
问题
git仍然试图将mp4文件推送到repo。
问题 如何避免将已删除的文件推送到远程仓库?
PS
我也试过git rm path/to/mp4
,文件已从我的目录中删除但是git仍然试图将文件推送到repo
答案 0 :(得分:3)
从这些命令看起来,视频文件仍处于提交历史记录中。
假设您没有进行其他提交,请尝试以下操作。如果你只是稍微调整它们。
尝试恢复到之前的提交
git reset --soft HEAD~1
然后执行git状态,看看你是否看到了文件
如果你这样做。然后删除它并重新发送
git commit -c ORIG_HEAD
答案 1 :(得分:2)
如果历史记录大于一次提交,并且mp4大文件已在旧提交中进行了版本化,则可以考虑使用以下方法清理回购的历史记录:
git filter-branch
(作为in this answer),或with BFG。
bfg --strip-blobs-bigger-than 1M my-repo.git
使用git gc --aggressive --prune=now
(作为explained here)
要“回滚”,只需在当前本地仓库的本地克隆上尝试这些操作(这样就是第二个本地仓库,克隆第一个)。如果最终结果不好,您可以在第一个(未触及的)回购中恢复。