2014-01-28 42 views
1

我现在已经意识到我采取了一些操作,这些操作相当于在没有手电筒的情况下进入洞穴。希望这次事件的复述将包含一个错误指示。将一个大文件添加到git分支,提交更改,现在该文件位于每个分支(包括主分支)中

我开始在我的项目的主分支。我从远程主服务器执行了一个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。我注意到我的本地主分支现在在远程主人的前面,这很奇怪,因为他们应该完全一样。我还注意到,当我构建我的iOS应用程序(来自master,而不是newFeature)时,应用程序大小比本应该大700mb。

现在,这部分是我开始恐慌,所以我道歉,如果事件的顺序并不完全准确...

  • 我看到我的MP4文件是不分级的文件运行后git status
  • 我试图做一个git reset HEAD <file>,似乎删除该文件,但它仍然显示在我的版本。
  • 然后我尝试git rebase,但从来没有通过它,因为我似乎打了一个循环,所有git rebase --continue做了最终在同一个地方一遍又一遍,所以我中止(我从来没有做过rebase之前)。
  • 放弃,我删除了所有本地文件(或至少我认为我做过),重新启动我的电脑(你永远不知道),从GitHub克隆了所有东西......而且我的版本仍然包含大型mp4文件。

我似乎无法找到mp4文件,虽然它显然存在于我构建应用程序时。我从来没有把它推到遥控器上,也不是因为GitHub的限制,它会让我无论如何。

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

编辑: 我试图回到构建之前我做过的newFeature分支使用Git的复位 - 硬,仍然没有运气,因为我的项目将仍与MP4文件建立。

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

解决: 见我的回答如下......长话短说,我需要清理我在Xcode(Cmd的移K)构建从build文件夹中删除的MP4。

+1

'git commit -a'只提交已更改但跟踪的文件。如果mp4文件是新的,它不会被'git add'-ed。您可以查看提交中的树,看它是否在那里(例如,'git show newFeature:'和'git show newFeature:subdir'来查看目录中的内容)。 – torek

+0

所以我可以看到包含mp4文件的提交。运行'git show :myMovie.mp4'给我以下'致命的:路径'myMovie.mp4'不存在于' – timgcarlson

+0

这意味着mp4文件实际上并不在提交(不是说这与Xcode问题的其他部分有关,我猜想已经解决了)。 – torek

回答

0

当然这是我应该从一开始就做的事情。我已经阅读过,“在构建项目之前,在构建中执行Clean”(Cmd-Shift-K in Xcode)。在驱动器上运行磁盘报告(使用JDiskReport)后,我发现mp4文件缓存在我的Library文件夹的Xcode DerivedData文件夹中。对构建执行清理操作会从该文件夹中删除该文件,并且其他将来的构建版本不会包含它。

我想我从来没有跑过一段时间没有执行Clean真的很明显。当我重新启动Xcode时,我错误地认为会完成任何类型的缓存清除。

原来,这不是直接与git的问题,而是与Xcode。我不确定它是否应该是正确的行为,但我现在将在分支之间切换时运行Clean。

0

尝试git clean删除任何额外的文件。您还应该检查构建系统的日志,以确定该文件包含在哪里。

+0

试过,没有成功......也只是尝试'git clean -f myMovie.mp4'无济于事。我会研究是否可以看到Xcode中的哪个部分仍然包含在构建中。我可以清楚地看到它被添加到构建中,但在项目中找不到任何引用。 – timgcarlson

相关问题