Xcode 向git分支添加了一个大文件,提交了更改,现在该文件位于每个分支(包括主分支)
我意识到我做了一些相当于没有手电筒进入洞穴的行为。希望这次事件的复述能说明出了什么问题 我从项目的主分支开始。我从远程主机执行了Xcode 向git分支添加了一个大文件,提交了更改,现在该文件位于每个分支(包括主分支),xcode,git,github,Xcode,Git,Github,我意识到我做了一些相当于没有手电筒进入洞穴的行为。希望这次事件的复述能说明出了什么问题 我从项目的主分支开始。我从远程主机执行了git pull(以确保我拥有最新的构建),然后执行了git checkout-b newFeature。通过这个newFeature分支,我做了一些更改,包括添加了一个700mb的.mp4文件。然后,我使用“git commit-a-m”新功能和一个大的mp4文件提交了我的更改…我从未将更改推送到远程。做了更多的改变,决定我不想要它们,所以我在一天结束时做了一个git
git pull
(以确保我拥有最新的构建),然后执行了git checkout-b newFeature
。通过这个newFeature
分支,我做了一些更改,包括添加了一个700mb的.mp4
文件。然后,我使用“git commit-a-m”新功能和一个大的mp4文件提交了我的更改…我从未将更改推送到远程。做了更多的改变,决定我不想要它们,所以我在一天结束时做了一个git-stash
今天早上,我切换到master
分支,在那里我做了一个git/status
。我注意到我的本地主分支现在领先于远程主分支,这很奇怪,因为它们应该完全相同。我还注意到,当我构建iOS应用程序时(从master
,而不是newFeature
),应用程序的大小比应该的大700mb
现在这部分是我开始恐慌的地方,所以如果事件的顺序不完全准确,我道歉
- 运行
后,我看到我的.mp4文件是一个未老化的文件git status
- 我试图做一个
,它似乎删除了文件,但它仍然出现在我的构建中git重置头
- 然后我尝试了
,但没有成功,因为我似乎遇到了一个循环,git-rebase
所做的一切都在同一个地方反复出现,所以我放弃了(我以前从来没有做过一次rebase)git-rebase--continue
- 放弃了,我删除了我所有的本地文件(或者至少我认为我删除了),重新启动了我的计算机(你永远不知道),从GitHub克隆了所有东西。。。我的构建仍然包括大型mp4文件
newFeature
分支之前,我尝试返回到构建——很难,仍然没有运气,因为我的项目仍然使用mp4文件构建
也许我可以找到本地存储此mp4文件的位置?我在我的项目文件夹中找不到它
已解决:
请看下面我的答案。。。长话短说,我需要清理我的内置Xcode(Cmd-shift-K)以从构建文件夹中删除MP4。尝试删除任何额外的文件。您还应该检查构建系统的日志,以了解此文件包含在何处。当然,这是我一开始就应该做的事情。我以前读过,“在构建项目之前,对构建进行清理”(Xcode中的Cmd-Shift-K)。在我的驱动器上运行磁盘报告(使用)后,我发现mp4文件缓存在我的
库
文件夹中Xcode的DerivedData
文件夹中。对生成进行清理时,将从该文件夹中删除该文件,并且没有其他将来的生成包含该文件
我想我从来没有遇到过一次不执行Clean
的情况。当我重新启动Xcode时,我错误地认为任何类型的缓存清除都会在那时完成
事实证明,这不是git的直接问题,而是Xcode的问题。我不确定它是否应该是正确的行为,但现在每当在分支之间切换时,我都会运行一个干净的程序。
git commit-a
只提交已更改但已跟踪的文件。如果mp4文件是新的,它将不会被添加到目录中。您可以查看提交中的树以查看它是否在那里(例如,git show newFeature:
和git show newFeature:subdir
,以查看目录中的内容)。因此,我可以查看包含mp4文件的提交。运行git show:myMovie.mp4
会给我以下fatal:Path'myMovie.mp4'在
中不存在,这意味着mp4文件实际上不在提交中(这与Xcode问题的其余部分无关,我想已经解决了)。尝试了,但没有成功。。。还刚刚尝试了git clean-f myMovie.mp4,但没有成功。我将研究是否可以看到Xcode中的哪些部分仍然包含在构建中。我可以清楚地看到它被添加到构建中,但是在项目中找不到任何关于它的引用。