有没有一种配置方法可以在不指定哪个分支的情况下进行设置?
Git 已经只拉取当前分支。如果您将分支设置为跟踪分支,则无需指定远程分支。
git branch --set-upstream-to=reponame/remotebranch localbranch
将建立跟踪关系。然后你发出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
这是一个 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 新手,上面的内容可能会简化很多。)
是的,有一个配置可以在
.gitconfig
中更改,例如:
[push]
default = current
这将推动当前分支在接收端更新具有相同名称的分支。
检查:
git config --global --get push.default
参见:git-config.