是否有一种无需指定哪个分支即可进行设置的配置方式?
Answers:
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>
仍然是默认值,不是吗?您是在暗示其他远程分支(例如起源/其他分支等)未更新,从而减少了流量吗?
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
。我看到git clone
默认情况下也添加了我的代码,remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
但这很标准。
pull.default
配置变量。将其放在您的git配置中不会做任何事情。
是的,有一个可以在中更改的配置.gitconfig
,例如:
[push]
default = current
这将推送当前分支以在接收端更新具有相同名称的分支。
检查方式:
git config --global --get push.default
请参阅:git-config。
该--set-upstream
标志已弃用,将被删除。因此,使用--track
或--set-upstream-to
示例:如果您希望为此分支机构设置跟踪信息,可以使用以下方法:
git branch --set-upstream-to=<remote>/<branch> develop
--set-upstream-to=
当它不知道您的跟踪信息时,它总是被git提及。更不用提弃用了。