我有一个本地git repo,我需要更新它。然而,在线repo远远领先于我的本地副本。我的连接速度非常慢。当我使用git pull-v--progress时,我开始看到进度,但过了一段时间,我得到了这个错误:
efrror: RPC failed: result = 18, HTTP code = 200 | 5.00 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
这是由于我的连接速度很慢。我需要知道是否有办法,比如说在我的本地回购之前只进行第一次承诺,看看我是否可以一步一步地更新我的本地逆回购。
重要:我想知道的是,是否有一种方法可以在本地副本之前提取#个提交,而不是特定的提交。
如果你想提取分支$branch的$N个提交,你可以这样做(假设你目前在$BRANCCH):
git log $BRANCH..origin/$BRANCH --pretty=format:%H | tail -$N | head -1 | git pull origin
现在,一步一步:
git log $BRANCH..origin/$BRANCH
将给出本地分支和远程分支之间不同的提交列表,--pretty=format:%H
选项只显示提交id,避免显示作者、日期或提交消息等其他信息。
tail -$N | head -1
给定一个列表,tail -N
会给你最后N行,head -1
会给你第一行。因此,如果我们把它们放在一起,我们就会得到列表的最后N行。
| git pull origin
只需将通过管道传递的提交id拉入当前分支即可。