在git分支中添加了一个大文件,定期更改,现在该文件位于每个分支(包括主)中



我正在意识到自己采取了一些动作,这些操作等同于进入没有手电筒的洞穴。希望这种事件的重述将包含出了什么问题的迹象。

我从我的项目的大师分支开始。我从远程主(以确保我拥有最新的构建),然后是git checkout -b newFeature进行了git pull。使用此newFeature分支,我进行了一些更改,包括添加一个700MB .mp4文件。然后,我使用git commit -a -m "New features and a big mp4 file..."进行了更改,从未将更改推向遥控器。做了更多更改,决定我不想要它们,所以我在一天结束时做了git stash

今天早上,我切换到master分支,在那里我做了git/status。我注意到我当地的主人分支现在已经领先于远程大师,这很奇怪,因为它们应该完全一样。我还注意到,当我构建iOS应用程序(来自master而不是newFeature)时,应用程序大小比本应大的700MB大。

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

  • 我看到我的.mp4文件是运行git status之后的未分段文件。
  • 我试图做一个git reset HEAD <file>,它似乎已删除了文件,但它仍然显示在我的构建中。
  • 然后我尝试了git rebase,但从未经历过它,因为我似乎碰到了一个循环,而git rebase --continue只能一遍又一遍地出现在同一位置,所以我中止了(我以前从未做过rebase)。/li>
  • 放弃,我删除了所有本地文件(或者至少我认为我确实如此),重新启动了我的计算机(您永远不知道),克隆了Github的所有内容...我的构建仍在包含大型MP4文件。

我似乎找不到MP4文件,尽管当我构建应用程序时,它显然在那里。我从来没有把它推到遥控器上,不是因为Github的约束,它还是会让我。

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

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

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

已解决:请参阅下面的答案...长话短说,我需要在Xcode(CMD-Shift-k)中清洁构建以从构建文件夹中删除MP4。

尝试 git clean删除任何额外的文件。您还应该检查构建系统的日志以找出包含该文件的位置。

当然,这是我一开始就应该做的。我以前阅读过"在构建项目之前,对构建进行清洁"(Xcode中的CMD-Shift-K)。在我的驱动器(使用JDiskReport)上运行磁盘报告后,我在我的Library文件夹中找到了在Xcode的DerivedData文件夹中缓存的MP4文件。对构建进行清洁,从此文件夹中删除了文件,没有其他未来的构建包括。

我想我从来没有遇到过不执行Clean的时间确实很明显。当我重新启动Xcode时,我错误地以为会进行任何形式的缓存清除。

因此,事实证明,这不是直接的git问题,而是xcode。我不确定这是否应该是正确的行为,但是现在每当分支之间切换时,我都会很干净。

最新更新