我们想将一个20.00以上的提交本地Git仓库推送到GitHub,但事实证明,尽管转移本身没有问题,GitHub实际上并不一次处理超过1000次提交(“process”意味着它们会链接提交问题等)。“chunked”是否推向远程Git回购?
因此,为了能够正确地传输这个存储库并使其正确处理,我们应该一次传输不超过1000个“块”。但是如何?
我们尝试以某种方式回到历史中,每次向前推进,但是我们必须使用错误的“排序”,因为这只会导致很多问题。
我们想将一个20.00以上的提交本地Git仓库推送到GitHub,但事实证明,尽管转移本身没有问题,GitHub实际上并不一次处理超过1000次提交(“process”意味着它们会链接提交问题等)。“chunked”是否推向远程Git回购?
因此,为了能够正确地传输这个存储库并使其正确处理,我们应该一次传输不超过1000个“块”。但是如何?
我们尝试以某种方式回到历史中,每次向前推进,但是我们必须使用错误的“排序”,因为这只会导致很多问题。
只要你使用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次提交。
几乎在那里,但它'git push [
谢谢,我也注意到了。 –
广告编辑:'HEAD〜$ i'不属于refspec_。它将不被接受。因为你可以推送修订,但你必须将其推送到分支。 –
人们通常推引用到远程,所以你应该git reset
您master
分支任何承诺这符合要求的被COMMITED(即,它是小于1000从回购的开头提交或最后推提交)。假设你已经确定(使用tig
或git log
)您第九百九十八提交是abd123124
和第一千九百八十零承诺是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 .
应该解决它。
你肯定可以做任何脚本自动这次提交发现的事情,但如果你知道你的回购的日志大小,你可以使用real_master~NUMBER
复位(比如,你的回购有正是 20K提交,你可以使用real_master~19000
,real_master~180000
,等等)。
没有必要重置。您可以推送修订版。 –
什么样的问题? –
像这样的事情: 错误:未能将某些参考推送到'起源' 提示:更新被拒绝,因为您当前分支的提示位于 提示:其远程对应端。合并远程更改(例如'git pull') 提示:再次推送之前。 提示:有关详细信息,请参阅'git push --help'中的'关于快速转发的注意事项'。 (抱歉乱七八糟,似乎无法让格式化在这里工作) – Quintesse
您只能在问题中添加格式。它是可编辑的,并且是添加更多细节的适当位置。 –