你怎么能只拉动当前的分支?

qod*_*nja 69 git config pull

是否有配置方式来设置它而无需指定哪个分支?

Set*_*son 65

Git已经只拉动了当前的分支.如果将分支设置为跟踪分支,则无需指定远程分支. git branch --set-upstream localbranch reponame/remotebranch将建立跟踪关系.然后git pull [--rebase],您将发布并仅更新该分支.

当然,所有远程跟踪分支和远程的所有引用都将被更新,但只会修改您的本地跟踪分支.

  • @AlessandroDs好吧,我将push.default设置为上游就是出于这个原因.push.default的新默认值是"simple",它只会更新当前分支,因此与pull相比更加平行. (2认同)
  • @Danjah:所有更改都从远程存储库中提取(到远程跟踪分支,例如 origin/master origin/foo 等)。如果您签出到定义了上游的本地分支,则只有该本地分支会被更新。如果您检出到没有上游的本地分支,则必须指定更多信息或设置上游。不要尝试修改非本地结账,创建本地分支并继续。如果您想减少传输的内容,可以在本地 git 配置中更新远程设备的 refspec。 (2认同)
  • 有没有内置的方法来不更新所有引用只获取当前分支? (2认同)

ayk*_*yke 50

我这样做了:

git pull origin "$(git branch | grep -E '^\* ' | sed 's/^\* //g')"
Run Code Online (Sandbox Code Playgroud)

要么

git pull origin $(git rev-parse --abbrev-ref HEAD)
Run Code Online (Sandbox Code Playgroud)

这将从中提取当前分支git branch,并从远程源中提取该分支.

请注意,就像Seth Robertson所说的那样,当没有给出参数时,只修改了当前分支,但是获取了所有远程分支.我不想获取所有远程分支,所以我这样做了.

  • 不应该为分支信息真正解析`git branch`.使用`git rev-parse`命令可以获得这些信息:`git pull origin $(git rev-parse --abbrev-ref HEAD)` (2认同)

Bru*_*ali 16

UPDATE

我添加的旧答案不再适用:/.但是在收到一些关于我放置的PUSH版本的赞成之后,对我来说意味着这个答案实际上是在帮助那些从搜索引擎来到这里的人,所以我会保留这个答案.

试试这个新版本的git:

$ git config --global push.default current
Run Code Online (Sandbox Code Playgroud)

  • 我不相信pull.default存在.参见[git-scm](http://git-scm.com/docs/git-config.html)或[kernel.org](https://www.kernel.org/pub/software/scm/git/ docs/git-config.html). (8认同)
  • 没有`pull.default`配置变量.将它放在你的git配置中将不会做任何事情. (6认同)
  • 问题是关于git pull,答案包含git push和许多upvotes.这是误导@BrunoCasali为什么你编辑你的答案并删除它,如果它适合你?如果你意识到答案是错误的,请删除它,而不是保留它与无关的信息,以保持upvotes. (4认同)
  • 是.linux上的git 2.3.4即使使用上面的`pull.default = current`也可以获取所有分支.我看到我的`git clone`默认情况下还添加了`remote.origin.fetch = + refs/heads/*:refs/remotes/origin/*`但这很标准. (2认同)