我们希望将20.00+提交本地Git存储库推送到GitHub,但事实证明,虽然传输本身没有问题但GitHub实际上并不会一次处理超过1000次提交(“进程”意味着他们' ll链接提交问题等。)
因此,为了能够正确地传输此存储库并使其正确处理,我们应该一次传输不超过1000个的“块”。但是如何?
我们尝试以某种方式回到历史中,每次都在块中推进并推动,但我们必须使用错误的“排序”,因为这只会导致很多问题。
答案 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 reset
将master
分支提交给 elegible 提交的任何提交(即,它的提交少于1000个回购的开始或最后推动的承诺)。假设您已确定(使用tig
或git 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~19000
,real_master~180000
等。