有没有一种配置方式可以设置这个而不必指定分支?
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
中提取当前的分支,并从远程origin拉取该分支。
注意,就像Seth Robertson所说,当没有给出参数时,只修改当前分支,但是会获取所有远程分支。我不想获取所有远程分支,因此我采用了这种方式。
git branch
shouldn't really be parsed for branch information. That information is available with git rev-parse
making the command: git pull origin $(git rev-parse --abbrev-ref HEAD)
- Paul DelRegit pull origin <current-branch>
,这本来就是默认设置,对吧?您是否在暗示其他远程分支(例如origin / other-branch等)未更新,因此流量减少了? - Peter - Reinstate Monicagit 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
。我真的很想知道为什么会出现没有跟踪信息的情况。 - Alfegit pull origin $(git branch --show-current)
这个更容易记住。 - RN Kushwaha更新
我之前提供的旧答案已经失效了 :/。但是由于我收到了一些有关PUSH版本的赞,这对那些通过搜索引擎来到这里的人实际上是有帮助的,因此我将保留这个答案。
尝试使用以下内容适用于新版本的git:
$ git config --global push.default current
pull.default=current
,也会获取所有分支。我发现我的git clone
默认还添加了remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
,但这是相当标准的。 - Mort--set-upstream
标志已被弃用并将被移除。因此,请使用 --track
或 --set-upstream-to
示例: 如果您希望为此分支设置跟踪信息,可以使用以下命令:
git branch --set-upstream-to=<remote>/<branch> develop
--set-upstream-to=
仍然会被提及。没有提到弃用。 - Adrien这里有一个 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。
git pull
而不是 git push
,所以我给你的答案投了反对票,以防止人们认为这是解决方案。 - Manse
fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
- neaumusic