所以我现在正在为一个旧项目创建一个 repo。我总共有 4.5 个文件,所以需要一些时间。我在共享托管环境中,并且我的主机限制了占用过多内存时间过长的进程。显然,这个过程需要一段时间,并且不断被我的主机结束。
有没有一种方法可以让我轻松放弃一次提交的推送,这样我就不会受到速率限制?
这也是我的第一次提交,所以我无法恢复我添加的所有文件。否则我会一块一块地做。
与ScottS的答案相同,我将在本地创建 a bundle
,以创建一个(巨型)文件。
FTP 单个文件比裸 git repo 的多个文件更不容易出错。(具体示例
请参见“如何同步两个 git 存储库”)
然后,您可以从远程端的该捆绑包中克隆。
我的第一个想法是在本地创建裸仓库并将其简单地通过 FTP 传输到服务器。那应该可以。
如果您没有在一次提交中完成所有工作,则可以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
等等...
您的步骤必须进行多少次提交将是一个尝试和失败的任务 - 这取决于您的提交的大小。
如果您没有任何历史记录,也许您可以为每个文件/文件夹进行单独的提交(我认为按文件大小关联是个好主意),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
会被上传),所以它不应该花费很多时间。当您重写历史时,请确保在您开始进行短推送和推送压缩提交之间的时间内没有人从远程克隆/获取,以避免冲突。