Git 只拉取一定数量的提交

Alf*_* A. 5 git pull bitbucket fast-forward

我有一个本地 git 仓库,我需要更新它。然而,在线回购远远领先于我的本地副本。我的连接速度非常慢。当我使用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
Run Code Online (Sandbox Code Playgroud)

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

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

Jua*_*uan 1

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

git log $BRANCH..origin/$BRANCH --pretty=format:%H | tail -$N | head -1 | git pull origin 
Run Code Online (Sandbox Code Playgroud)

现在,一步一步:

git log $BRANCH..origin/$BRANCH
Run Code Online (Sandbox Code Playgroud)

将给出本地分支和远程分支之间不同的提交列表,并且该--pretty=format:%H选项将仅显示提交 ID,避免其他信息,如作者、日期或提交消息。

tail -$N | head -1
Run Code Online (Sandbox Code Playgroud)

给定一个列表,tail -N将为您提供最后 N 行,并head -1为您提供第一行。因此,如果我们将它们放在一起,我们就获得了列表的最后 N 行。

| git pull origin 
Run Code Online (Sandbox Code Playgroud)

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