从提交中删除文件(由于github上的文件大小)

时间:2014-01-08 07:56:15

标签: git github

我是git的初学者,我使用具有文件大小限制的github。所以我提交的内容很少,我想将它们推送到远程仓库,但由于文件大小,我无法提交。我删除了文件并进行了新的提交,但它仍然不允许我(因为之前的提交) 有没有办法通过重新设置或删除以前的提交并制作全新或任何其他方式来解决此问题?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用BFG repo cleaner tool

从您的回购历史记录中删除该大文件
$ java -jar bfg.jar --strip-biggest-blobs 500 some-big-repo.git

$ cd some-big-repo.git
$ git reflog expire --expire=now --all
$ git gc --prune=now --aggressive

$ git push

答案 1 :(得分:1)

在git中提交历史记录中向后移动的关键是

git reset <commit>

假设您的git图如下所示:

* commit 3  (HEAD, branch-1)
| Adding a large file
|
|
* commit 2 (branch-2)
| Some changes
|
|
* commit 1

如果您在上面的示例中签出了branch-1并执行了git reset branch-2,则branch-1将移至提交2,大文件将成为“未跟踪文件”。对跟踪文件的所有更改都将在“未提交更改的更改”下。执行重置后,您可以根据需要通过“添加”或“签出”文件来创建新的提交。此新提交将不再包含其历史记录中的大文件,您应该能够推送到远程存储库。

您可以找到有关git reset here的更多信息。

重置时,如果先前的提交没有指向它们的分支,则它们将不再可见。如果你觉得你可能想要那些旧的提交,你可以在我们的例子中创建一个指向提交3的临时分支。或者,你可以使用git fsck再次找到你的旧提交。