如何配置Git在使用"git pull"时自动从当前分支拉出?

Bra*_*ham 35 git branch config

使用我们当前的设置,你总是必须输入分支名称(即:git pull origin feature-branch"当拉动时.我已经犯了从一个分支拉到另一个分支的错误,意外地将两个分支与两个非常不同的版本合并.我想要通过配置Git来避免这种情况,这样只需键入git pull就可以拉出当前的分支.

我该怎么做呢?

bat*_*ilc 25

我也是一个打字git pull而且获得所有魔力的粉丝.

你有2个选择:

1) git config --global branch.autoSetupMerge always

这将确保您是否结帐远程分支或创建新分支; 跟踪信息将由git自动处理.然后你就可以了

git clone <some_repo>
git checkout -b <new_branch>
git push
git pull
Run Code Online (Sandbox Code Playgroud)

请注意,为了push不再使用更多关键字,您还需要设置推送选项.我已经设定了matching,但每个人都有他们的偏好.(git config --global push.default matching)

更多信息: autosetupmerge默认为true.当设置为true时,这允许git在您签出远程的现有分支时执行跟踪.例如,如果你这样做git checkout <branch>,git将处理跟踪信息,以便你可以git pull在该分支上执行.但是,它不会在您使用-b选项创建的分支上执行此操作.设置autosetupmergealways确保git始终处理跟踪信息.

2)签出新分支时,需要专门设置从原点拉出的分支(也称跟踪)

git checkout -b <branch> --track <remote>/<branch>
Run Code Online (Sandbox Code Playgroud)

当分支是瞬态时,我发现这不太有用.如果您很少创建新分支,则应该使用此分支.但是,如果你像我一样,只有分支是持久的,每个功能都有自己的全新分支,那么我发现选项1更有用.

请注意,您不需要进行git配置--global.您可以简单地--local在那里写,并且只对该存储库具有特定的设置.

  • git config --global branch.autoSetupMerge always是我一直在寻找的命令。谢谢。我不明白为什么这不仅仅是默认设置。 (2认同)

Kar*_*ran 12

您可以创建跟踪分支.来自Git Book(http://git-scm.com/book/en/Git-Branching-Remote-Branches):

克隆存储库时,它通常会自动创建master跟踪的 分支origin/master.这就是原因git push, git pull开箱即用,没有其他论据.但是,如果您愿意,可以设置其他跟踪分支 - 不跟踪分支origin并且不跟踪master分支的分支.这个简单的例子就是你刚看到,运行的例子 git checkout -b [branch] [remotename]/[branch].如果你有Git 1.6.2或更高版本,你也可以使用--track速记:

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"
Run Code Online (Sandbox Code Playgroud)


Sam*_*uel 10

这对我有用:

git branch --set-upstream-to=origin/branch_name branch_name
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我可以使用以下语法:

git checkout branch_name
git pull --rebase
git push
Run Code Online (Sandbox Code Playgroud)

  • 更短:`git branch -u origin/branch_name` (4认同)

小智 5

如果您已git push配置为自动计算远程分支名称,则可以通过-u,它还将自动设置跟踪分支.

要设置git push以使用具有相同名称的远程分支:

git config --global push.default current`
Run Code Online (Sandbox Code Playgroud)

-u来自的选项说明git help push:

-u, --set-upstream
    For every branch that is up to date or successfully pushed, add
    upstream (tracking) reference, used by argument-less git-pull(1) and
    other commands. For more information, see branch.<name>.merge in
    git-config(1).
Run Code Online (Sandbox Code Playgroud)

假设您当前的分支是<branch_name>:

$ git push -u
Branch <branch_name> set up to track remote branch <branch_name> from origin.
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

  • 这不是有关git pull的问题吗?(而不是git push) (2认同)