【发布时间】:2011-08-28 11:07:13
【问题描述】:
是否有无需指定哪个分支的配置方式来设置它?
【问题讨论】:
是否有无需指定哪个分支的配置方式来设置它?
【问题讨论】:
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 所说,当没有给出参数时,只有当前分支被修改,但所有远程分支都被获取。我不想获取所有远程分支,所以我这样做了。
【讨论】:
git branch 不应该真正被解析为分支信息。该信息可通过git rev-parse 获取命令:git pull origin $(git rev-parse --abbrev-ref HEAD)
git pull origin <current-branch> 无论如何都是默认值,不是吗?您是否暗示其他远程分支(例如 origin/other-branch 等)没有更新,从而减少了流量?
git pull,您最终可能会收到类似There is no tracking information for the current branch. Please specify which branch you want to merge with. 的消息。然后你总是输入git pull origin my-feature-branch。我真的很想知道没有跟踪信息的情况是如何发生的。
更新
我添加的旧答案不再起作用:/。但是在收到一些关于我放置的 PUSH 版本的投票后,对我来说,这意味着这个答案实际上是在帮助那些从搜索引擎来到这里的人,所以我会保留这个答案。
在新版本的 git 上试试这个:
$ git config --global push.default current
【讨论】:
pull.default=current,Linux 上的 git 2.3.4 也会获取所有分支。我看到默认情况下我的git clone 也添加了remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*,但这是相当标准的。
pull.default 配置变量。把它放在你的 git 配置中不会做任何事情。
--set-upstream 标志已弃用并将被删除。
因此,请使用--track 或--set-upstream-to
示例: 如果你想为这个分支设置跟踪信息,你可以这样做:
git branch --set-upstream-to=<remote>/<branch> develop
【讨论】:
--set-upstream-to=。没有提及弃用。
是的,.gitconfig 中有一个配置可以更改,例如:
[push]
default = current
这将推送当前分支以更新接收端具有相同名称的分支。
检查人:
git config --global --get push.default
请参阅:git-config。
【讨论】:
git pull 而不是 git push 所以我对你的回答投了反对票,以防止人们认为这是解决方案
这是一个 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 新手,上面的内容可能会简化很多。)
【讨论】: