88

有没有一种配置方法来设置它而不必指定哪个分支?

4

6 回答 6

93

Git 已经只拉取当前分支。如果您将分支设置为跟踪分支,则无需指定远程分支。 git branch --set-upstream localbranch reponame/remotebranch将建立跟踪关系。然后你发出git pull [--rebase],只有那个分支会被更新。

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

有用的 Bash 别名可减少此常见操作的键入:

# Add an alias to pulling latest git changes into your same branch
alias pullhead='git pull origin $(git rev-parse --abbrev-ref HEAD)'

执行相同操作的 Powershell 函数:

Function pullhead {
    $cur_head="$(git rev-parse --abbrev-ref HEAD)"
    & git pull origin ${cur_head}
}
于 2011-05-18T23:07:42.810 回答
70

我就是这样做的:

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

或者

git pull origin $(git rev-parse --abbrev-ref HEAD)

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

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

于 2014-04-27T21:44:10.723 回答
14

更新

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

试试这个新版本的 git:

$ git config --global push.default current
于 2015-02-09T20:11:50.253 回答
2

--set-upstream标志已弃用并将被删除。因此,使用--track--set-upstream-to

示例:如果您希望为此分支设置跟踪信息,您可以这样做:

git branch --set-upstream-to=<remote>/<branch> develop
于 2015-07-10T09:26:02.460 回答
1

是的,有一个可以更改的配置.gitconfig,例如:

[push]
  default = current

这将推送当前分支以更新接收端具有相同名称的分支。

检查方式:

git config --global --get push.default

请参阅:git-config

于 2015-10-24T17:11:33.490 回答
0

这是一个 git 别名,它不假定远程是origin并且如果分支没有跟踪远程则处理。

pullh = "!f() { set -e; set -o pipefail; arr=($(git rev-parse --abbrev-ref @{u} | sed 's/\\//\\n/')); git pull ${arr[0]} ${arr[1]}; }; f"

(免责声明:我是一个 bash 新手,上面的内容可能会简化很多。)

于 2020-08-20T11:28:16.713 回答