你怎么能只拉动当前的分支?

时间:2011-05-18 23:03:32

标签: git config pull

是否有配置方式来设置它而无需指定哪个分支?

6 个答案:

答案 0 :(得分:64)

Git已经只拉动当前分支。如果将分支设置为跟踪分支,则无需指定远程分支。 git branch --set-upstream localbranch reponame/remotebranch将设置跟踪关系。然后发出git pull [--rebase],只更新该分支。

当然,所有远程跟踪分支和远程的所有引用都将被更新,但只会修改您的本地跟踪分支。

答案 1 :(得分:45)

我就是这样做的:

git pull origin "$(git branch | grep -E '^\* ' | sed 's/^\* //g')"

git pull origin $(git rev-parse --abbrev-ref HEAD)

这将从git branch中提取当前分支,并从远程原点提取该分支。

注意,就像Seth Robertson所说的那样,当没有给出参数时,只修改当前分支,但是获取所有远程分支。我不想取得所有远程分支,所以我这样做了。

答案 2 :(得分:16)

<强>更新

我添加的旧答案不再适用:/。但是在收到一些关于我已经放置的PUSH版本的赞成之后,对我而言意味着这个答案实际上是帮助那些从搜索引擎来到这里的人,所以我会保留这个答案。

尝试使用新版本的git:

$ git config --global push.default current

答案 3 :(得分:3)

{@ 1}}标志已弃用,将被删除。 因此,请使用--set-upstream--track

实施例: 如果您希望为此分支设置跟踪信息,可以使用以下命令:

--set-upstream-to

答案 4 :(得分:3)

是的,有一个配置可以在.gitconfig中更改,例如:

[push]
  default = current

将推动当前分支更新接收端具有相同名称的分支。

检查:

git config --global --get push.default

请参阅:git-config

答案 5 :(得分:0)

这是一个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新手,以上内容可能会简化很多。)

相关问题