Git推动使用太多资源并由主机结束

时间:2012-12-21 04:50:29

标签: git resources push

所以我现在正在为一个旧项目创建一个回购。我总共有4.5个文件,所以需要一些时间。我在一个共享的托管环境中,我的主机限制了占用太多内存太长时间的进程。显然,这个过程需要一段时间,并且它会一直由我的主持人结束。

有没有办法可以轻松推动单次提交,因此我不会受到限制?

这也是我的第一次提交,所以我无法恢复我添加的所有文件。否则我会一块一块地做。

3 个答案:

答案 0 :(得分:2)

我的第一个想法是在本地创建裸仓库并简单地将其FTP到服务器。这应该可行。

答案 1 :(得分:2)

ScottSanswer相同的想法,我会在本地创建bundle,以便创建一个(巨人)文件。< / p>

FTP单个文件比裸git repo的多个文件更不容易出错 (有关具体示例,请参阅“How to synchronize two git repositories”)

然后,您可以从远程端的捆绑包中克隆。

答案 2 :(得分:0)

如果您没有在一次提交中完成所有工作,则可以git push部分提交。

使用git log,你可以“走”你的历史,检查一些提交并将它们推送到你的遥控器。让我们说:

$ git log --oneline master
$ git checkout abcabc123123 # 10th commit in history
$ git push origin HEAD:master
$ git checkout bcdef145325 # 30th commit in history
$ git push origin HEAD:master

等等......

您的步骤必须提交多少次尝试才能成为尝试和失败的任务 - 这取决于您的提交的大小。

如果您没有任何历史记录,也许您可​​以为每个文件/文件夹进行单独提交(我认为通过filesize关联是个好主意),push如前所述,然后将所有提交压缩成一个:

$ git checkout master
$ git reset acbacbad142 # hash of first commit
$ git commit --ammend
$ git push -f origin master

您使用reset + commit --ammend在一次提交中重新定义所有更改,然后push -f重写远程分支。文件(blob s,以git术语表示)已经上传(即使是tree也是如此),所以不应该花费大量时间。 在重写历史记录时,请确保在您开始进行短暂推送和推送压缩提交之间的时间内没有人从远程克隆/提取,以避免冲突。