我现在已经意识到我采取了一些操作,这些操作相当于在没有手电筒的情况下进入洞穴。希望这次事件的复述将包含一个错误指示。将一个大文件添加到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。
'git commit -a'只提交已更改但跟踪的文件。如果mp4文件是新的,它不会被'git add'-ed。您可以查看提交中的树,看它是否在那里(例如,'git show newFeature:'和'git show newFeature:subdir'来查看目录中的内容)。 – torek
所以我可以看到包含mp4文件的提交。运行'git show:myMovie.mp4'给我以下'致命的:路径'myMovie.mp4'不存在于' –
timgcarlson
这意味着mp4文件实际上并不在提交(不是说这与Xcode问题的其他部分有关,我猜想已经解决了)。 – torek