Git只提取一定数量的提交

时间:2015-02-18 19:07:20

标签: git bitbucket pull fast-forward

我有一个本地git 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

这是因为我连接速度很慢。我需要知道是否有办法获得,只说我的本地仓库之前的第一次提交,看看我是否可以一次更新我的本地仓库。

重要:我想知道的是,是否有办法在本地副本之前提取#提交,而不是特定提交。

1 个答案:

答案 0 :(得分:1)

如果您想提取分支$ BRANCH的$ N提交,您可以这样做(假设您当前在$ BRANCH中):

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将为您提供第一行。因此,如果我们将它们放在一起,我们将获得列表的最后一行。

| git pull origin 

只需将通过管道传递的提交ID拉入当前分支。