在我的Visual Studio项目中,我有一个来自Visual Studio Team Services的repo,我使用git进行版本控制,我对一些文件做了一些更改,然后我还添加了一个巨大的视频文件到我的资产中,我意外地忘记将该文件扩展名添加到我的gitignore文件中,我在本地提交了一个提交,然后我推送了它。
我总共有13个更改,在第5个更改被推(视频文件),它是太长的时间,我不想推到我的vsts中的视频文件。我试图做恢复到该提交,但它失败了,我只想保留这些更改在我的文件中,并希望推他们,但我不想推视频文件,现在我卡住了,我应该怎么做才能实现这一点?
4条答案
按热度按时间9gm1akwq1#
Git不推送 changes,也不推送 files. Git推送-和获取-commits.每个事务的单位是提交的整数(当然,零也是允许的;现在,每个提交都是文件的快照,所以文件会随着提交一起出现。但是
git push
推送的是 * 提交 *,而不是文件。(在推送提交之后,git push
还发送一组“更改或创建此 * 分支名称 *”请求,但我们在这里不必担心。)那么,你必须做的是用一系列新的、改进的提交来 * 替换 * 你的 * 糟糕 * 的提交。
对于一个线性提交序列,最简单的方法是使用 interactive rebase 从你添加坏文件的地方移除坏文件。不过,还有很多其他的方法可以做到这一点,有一篇文章在很多答案中详细介绍了所有这些:How to remove/delete a large file from commit history in Git repository?请参见Greg Bacon's answer in particular以使用交互式变基来修复此问题。
jxct1oxe2#
由于您只是提交而尚未推送,请尝试以下操作
dfty9e193#
我通过以下步骤解决了这个问题。
1.复制项目的变更文件/文件夹,并将其粘贴到repo本地。
1.从本地系统中完全删除存储库.
1.再次从ur系统上的vsts克隆存储库。
1.现在替换这文件/文件夹这你拷贝早先在第一步以便现在你有这新的.
1.在ur gitignore中添加扩展名“.mp4”和“.mkv”。
1.提交并推送更改。
wfveoks04#
从项目根目录运行以下命令。
第一个月
Reference: https://www.deployhq.com/git/faqs/removing-large-files-from-git-history#git39s-codefilter-branchcode-to-the-rescue