“chunked”推送到远程Git仓库吗?

时间:2014-02-18 12:45:05

标签: git github

我们希望将20.00+提交本地Git存储库推送到GitHub,但事实证明,虽然传输本身没有问题但GitHub实际上并不会一次处理超过1000次提交(“进程”意味着他们' ll链接提交问题等。)

因此,为了能够正确地传输此存储库并使其正确处理,我们应该一次传输不超过1000个的“块”。但是如何?

我们尝试以某种方式回到历史中,每次都在块中推进并推动,但我们必须使用错误的“排序”,因为这只会导致很多问题。

2 个答案:

答案 0 :(得分:2)

如果您使用的是bash,则可以运行以下脚本:

#!/bin/bash
for i in $(seq 20000 -900 0)
do
   git push origin master~$i:master
done
git push origin master:master

它将从20000迭代到0并迭代地将提交推送到远程分支master

master~n是Git语法,表示master 之前的 n'提交。

答案 1 :(得分:0)

通常会推送对远程的引用,因此您应该git resetmaster分支提交给 elegible 提交的任何提交(即,它的提交少于1000个回购的开始或最后推动的承诺)。假设您已确定(使用tiggit log)您的第998次提交为abd123124,而第80次提交为bad1424,您可以:

$ git checkout -b real_master # create a 'backup' branch for not losing the reference
$ git checkout master
$ git reset abd123124 # set master to the 998th commit
$ git push origin master
$ git reset bad1424 # set master to the 1980th commit
$ git push origin master

等等。

我认为你不应该对工作树有任何问题,但如果你这样做,git checkout .应该解决它。

您肯定可以制作任何脚本来自动执行此提交,但如果您知道您的repo的日志大小,则可以使用real_master~NUMBER进行重置(例如,您的repo 完全 20k提交,您可以使用real_master~19000real_master~180000等。