3 回答
TA贡献1831条经验 获得超9个赞
我发现壁球比壁球更有用filter-branch
。我做了以下工作:
在本地删除大文件。
提交本地删除。
提交软重置X号(对我来说是3)
git reset --soft HEAD~3
。然后重新提交所有更改(又称壁球)
git commit -m "New message for the combined commit"
推送压缩的提交。
特殊情况(来自用户@lituo):如果上述方法不起作用,则可能是这种情况。提交1包含大文件,提交1的推送由于大文件错误而失败。提交2删除了大文件,git rm --cached [file_name]
但提交2的推送仍然失败。您可以按照相同的步骤,只是使用替代以上HEAD~3
,使用HEAD~2
。
TA贡献2019条经验 获得超9个赞
如果文件是使用最新提交添加的,而您尚未推送到GitHub,则可以删除文件并修改提交,取自此处:
git rm --cached giant_file
# Stage our giant file for removal, but leave it on disk
git commit --amend -CHEAD
# Amend the previous commit with your change
# Simply making a new commit won't work, as you need
# to remove the file from the unpushed history as well
git push
# Push our rewritten, smaller commit
TA贡献1806条经验 获得超5个赞
您可以使用
git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD
这将删除该文件历史记录中的所有内容。问题在于该文件存在于历史记录中。
该命令更改提交的哈希值,这可能是一个真正的问题,尤其是在共享存储库上。在不了解后果的情况下不应执行此操作。
- 3 回答
- 0 关注
- 603 浏览
添加回答
举报