有没有一种配置方法来设置它而不必指定哪个分支?
6 回答
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}
}
我就是这样做的:
git pull origin "$(git branch | grep -E '^\* ' | sed 's/^\* //g')"
或者
git pull origin $(git rev-parse --abbrev-ref HEAD)
这将从 中提取当前分支git branch
,并从远程源中提取该分支。
请注意,就像 Seth Robertson 所说,当没有给出参数时,仅修改当前分支,但获取所有远程分支。我不想获取所有远程分支,所以我这样做了。
更新
我添加的旧答案不再起作用:/。但是在收到一些关于我放置的 PUSH 版本的赞成票后,对我来说,这意味着这个答案实际上是在帮助那些从搜索引擎来到这里的人,所以我会保留这个答案。
试试这个新版本的 git:
$ git config --global push.default current
该--set-upstream
标志已弃用并将被删除。因此,使用--track
或--set-upstream-to
示例:如果您希望为此分支设置跟踪信息,您可以这样做:
git branch --set-upstream-to=<remote>/<branch> develop
是的,有一个可以更改的配置.gitconfig
,例如:
[push]
default = current
这将推送当前分支以更新接收端具有相同名称的分支。
检查方式:
git config --global --get push.default
请参阅:git-config。
这是一个 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 新手,上面的内容可能会简化很多。)