繁体   English   中英

向git分支添加了一个大文件,提交了更改,现在该文件位于每个分支(包括master)中

[英]Added a large file to a git branch, committed changes, now the file is in every branch (including master)

我当时意识到我采取了一些行动,这些行动等同于进入没有手电筒的洞穴。 希望事件的重述将包含错误原因的指示。

我从项目的主分支开始。 我从远程主服务器执行git pull (以确保我具有最新的版本),然后执行git checkout -b newFeature 通过这个newFeature分支,我进行了一些更改,包括添加700mb .mp4文件。 然后,我使用git commit -a -m "New features and a big mp4 file..."来提交更改,但从未将更改推送到远程。 进行了一些更改,决定我不想要它们,所以我在一天结束时做了一个git stash

今天早上,我切换到master分支,在那里做git/status 我注意到我的本地master分支现在位于远程master之前,这很奇怪,因为它们应该完全相同。 我还注意到,当我构建iOS应用程序(来自master ,不是newFeature )时,该应用程序的大小比应该的大小大了700mb。

现在这是我开始恐慌的地方,所以如果事件顺序不完全准确,我深表歉意。

  • 我看到我的.mp4文件在运行git status后是未暂存的文件。
  • 我试图做一个git reset HEAD <file> ,它似乎删除了文件,但是它仍然显示在我的版本中。
  • 然后,我尝试了git rebase ,但从未尝试过,因为我似乎遇到了一个循环,其中所有git rebase --continuegit rebase --continue在同一位置结束,所以我放弃了(我以前从未做过rebase) 。
  • 放弃,我删除了所有本地文件(或者至少我认为是的),重新启动了计算机(您永远不知道),从GitHub克隆了所有内容……而我的构建仍然包括大型mp4文件。

我似乎找不到mp4文件,尽管在构建应用程序时它显然在那儿。 我从来没有将它推到远程,不是因为GitHub的限制它还是会让我失望。

任何解决方案,面包屑,或任何将不胜感激! 谢谢!

编辑 :在尝试使用git reset --hard进行newFeature分支之前,我尝试返回到构建,仍然没有运气,因为我的项目仍将使用mp4文件进行构建。

也许我可以找到此mp4文件在本地存储的位置? 我在项目文件夹中找不到它。

求助 :请参阅下面的答案...长话短说,我需要在Xcode(Cmd-shift-K)中清理构建,以从构建文件夹中删除MP4。

尝试使用git clean删除所有多余的文件。 您还应该检查构建系统的日志,以找出包含该文件的位置。

当然,这是我从一开始就应该做的事情。 我之前读过“在构建项目之前,请先对构建进行清理”(Xcode中的Cmd-Shift-K)。 在驱动器上运行了磁盘报告(使用JDiskReport )之后,我发现mp4文件缓存在我的Library文件夹中Xcode的DerivedData文件夹中。 在内部版本上执行“清理”操作将从此文件夹中删除该文件,并且以后没有其他内部版本。

我猜我从来没有遇到过没有表现出“ Clean事实。 当我重新启动Xcode时,我错误地认为那时将进行任何类型的缓存清除。

因此,事实证明这不是直接与git有关的问题,而与Xcode有关。 我不确定它是否应该是正确的行为,但是无论何时在分支之间切换,我现在都将运行Clean。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM