如何在git push上设置最大提交计数

如何在git push上设置最大提交计数,git,git-svn,git-push,bash,Git,Git Svn,Git Push,Bash,我正在将超过10000次提交的现有SVN存储库(仅主干)迁移到托管Git解决方案(在我的例子中是BitBucket) 将SVN repo转换为本地Git没有问题,但现在我想将所有修订版推送到一个空的Git repo在线 但是从陆龟开始推,它会停止输出: git.exe push -v --progress "origin" master Counting objects: 198817, done. Delta compression using up to 4 threads. Compre

我正在将超过10000次提交的现有SVN存储库(仅主干)迁移到托管Git解决方案(在我的例子中是BitBucket)

将SVN repo转换为本地Git没有问题,但现在我想将所有修订版推送到一个空的Git repo在线

但是从陆龟开始推,它会停止输出:

git.exe push -v --progress "origin" master

Counting objects: 198817, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (83858/83858), done.
POST git-receive-pack (chunked)
Writing objects: 100% (198817/198817), 1.54 GiB | 460.00 KiB/s, done.
Total 198817 (delta 130510), reused 178506 (delta 112822)
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
error: RPC failed; curl 52 Empty reply from server
Pushing to https://__removed__@bitbucket.org/__removed__/__removed__.git
Everything up-to-date


git did not exit cleanly (exit code 1) (3644609 ms @ 06.10.2016 11:16:23)
我认为解决我的问题的唯一办法就是一次推送1000次提交。但是,如何将服务器上尚未提交的前1000个提交限制为最大


我不想指定要推送的每个提交(如中)。我只想设置一个最大计数。

我在中描述了手动执行此操作的方法。(这个答案还描述了如果你在一个大型提交中遇到困难时该怎么办。)

正如我在回答和评论中提到的,如果可以的话,我建议从HTTPS切换到SSH,因为我在推送SSH时没有遇到这种问题;它似乎仅限于HTTPS

但是,如果您一直使用HTTPS,则必须一次推送较小的提交子集。根据您问题中的要求,这里有一种自动化流程的方法(以我编写的脚本的形式):

#/bin/bash
#将git推送一分为二以绕过HTTP POST大小限制。
分行=1美元
提交=$(git日志--oneline | wc-l)
当前=$commits
而[$(git rev parse origin/$branch 2>/dev/null)!=$(git rev parse$branch)]
做
#Git push命令向后计数,因此反转计数器。
反向=$(expr$提交-$当前)
git推送源$branch~$inverse:$branch
如果[$?-ne 0]
然后
#如果失败,如果可能,进一步平分。
如果[$current>1]
然后
当前=$(expr$当前/2)
其他的
echo“错误,无法推送单个提交。”
出口1
fi
其他的
#如果成功,请重置对分。
当前=$commits
fi
完成
我手边没有一个repo/服务器来测试这个,但它至少可以让你开始

请注意,这并没有将提交限制为某个数字,而是执行二进制搜索以确定一次可以成功推送多少个提交

为了完整起见,这里有一个脚本,它一次推送特定数量的提交:

#/bin/bash
#推送以较小的批量提交。
分行=1美元
A=2美元
提交=$(git日志--oneline | wc-l)
当前=$a当前
而[$(git rev parse origin/$branch 2>/dev/null)!=$(git rev parse$branch)]
做
#Git push命令向后计数,因此反转计数器。
反向=$(expr$提交-$当前)
git推送源$branch~$inverse:$branch
如果[$?-ne 0]
然后
echo“错误,无法推送$Atoce提交。”
出口1
其他的
当前=$(expr$commits+atonce)
fi
完成

我在中描述了手动执行此操作的方法。(这个答案还描述了如果你在一个大型提交中遇到困难时该怎么办。)

正如我在回答和评论中提到的,如果可以的话,我建议从HTTPS切换到SSH,因为我在推送SSH时没有遇到这种问题;它似乎仅限于HTTPS

但是,如果您一直使用HTTPS,则必须一次推送较小的提交子集。根据您问题中的要求,这里有一种自动化流程的方法(以我编写的脚本的形式):

#/bin/bash
#将git推送一分为二以绕过HTTP POST大小限制。
分行=1美元
提交=$(git日志--oneline | wc-l)
当前=$commits
而[$(git rev parse origin/$branch 2>/dev/null)!=$(git rev parse$branch)]
做
#Git push命令向后计数,因此反转计数器。
反向=$(expr$提交-$当前)
git推送源$branch~$inverse:$branch
如果[$?-ne 0]
然后
#如果失败,如果可能,进一步平分。
如果[$current>1]
然后
当前=$(expr$当前/2)
其他的
echo“错误,无法推送单个提交。”
出口1
fi
其他的
#如果成功,请重置对分。
当前=$commits
fi
完成
我手边没有一个repo/服务器来测试这个,但它至少可以让你开始

请注意,这并没有将提交限制为某个数字,而是执行二进制搜索以确定一次可以成功推送多少个提交

为了完整起见,这里有一个脚本,它一次推送特定数量的提交:

#/bin/bash
#推送以较小的批量提交。
分行=1美元
A=2美元
提交=$(git日志--oneline | wc-l)
当前=$a当前
而[$(git rev parse origin/$branch 2>/dev/null)!=$(git rev parse$branch)]
做
#Git push命令向后计数,因此反转计数器。
反向=$(expr$提交-$当前)
git推送源$branch~$inverse:$branch
如果[$?-ne 0]
然后
echo“错误,无法推送$Atoce提交。”
出口1
其他的
当前=$(expr$commits+atonce)
fi
完成

“我认为解决我问题的唯一办法就是一次推送1000个提交”-你为什么这么认为?我认为我的推送太大了。我想尝试将其缓冲成更小的部分。我不确定问题出在哪里,但测试起来很容易:在
master
上的一长组提交开始附近选择一个提交,然后使用
git push:master
手动推送该提交(当然也会推送其祖先提交)。如何从一些恼人的GUI(相对于恼人的命令行:-)实现这一点,我不知道。你能从HTTPS切换到SSH吗?“我认为解决我问题的唯一办法是一次推送1000个提交”-你为什么这么认为?我认为我的推送太大了。我想尝试将其缓冲成更小的部分。我不确定问题出在哪里,但测试起来很容易:在
master
上的一长组提交开始附近选择一个提交,然后使用
git push:master
手动推送该提交(当然也会推送其祖先提交)。如何从一些恼人的GUI(相对于恼人的命令行:-)实现这一点,我不知道。你能从HTTPS切换到SSH吗?最后一个表达式是否应该在